Created
February 14, 2022 13:05
-
-
Save coisa/e8fc473b59c975acad24df607b1b9e60 to your computer and use it in GitHub Desktop.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| <?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