Skip to content

Instantly share code, notes, and snippets.

@coisa
Created February 14, 2022 13:05
Show Gist options
  • Select an option

  • Save coisa/e8fc473b59c975acad24df607b1b9e60 to your computer and use it in GitHub Desktop.

Select an option

Save coisa/e8fc473b59c975acad24df607b1b9e60 to your computer and use it in GitHub Desktop.
<?php
/**
* @copyright Copyright (c) 2020-2022 Felipe Sayão Lobato Abreu <[email protected]>
* @license https://opensource.org/licenses/MIT MIT License
*/
namespace CoiSA\Autoload\ClassLoader;
/**
* Class AliasClassLoader.
*
* @package CoiSA\Autoload\ClassLoader
*/
final class AliasClassLoader
{
/**
* @var string
*/
private $namespace;
/**
* @var string
*/
private $alias;
/**
* AliasClassLoader constructor.
*
* @param string $alias
* @param string $namespace
*/
public function __construct($alias, $namespace)
{
$this->alias = $alias;
$this->namespace = $namespace;
}
/**
* {@inheritdoc}
*/
public function __invoke($aliasClass)
{
if (!empty($this->alias) && 0 !== strpos($aliasClass, $this->alias)) {
return false;
}
if (class_exists($aliasClass)) {
return false;
}
$class = $this->namespace;
$class .= empty($this->alias) ? '\\' . $aliasClass : substr($aliasClass, strlen($this->alias));
if (false === class_exists($class)) {
return false;
}
if (false === class_alias($class, $aliasClass)) {
return false;
}
return class_exists($class, false);
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment