%PDF- %PDF-
| Direktori : /home/graphicd/public_html/vebto/vendor/roave/better-reflection/src/Reflector/ |
| Current File : /home/graphicd/public_html/vebto/vendor/roave/better-reflection/src/Reflector/ClassReflector.php |
<?php
declare(strict_types=1);
namespace Roave\BetterReflection\Reflector;
use Roave\BetterReflection\Identifier\Identifier;
use Roave\BetterReflection\Identifier\IdentifierType;
use Roave\BetterReflection\Reflection\Reflection;
use Roave\BetterReflection\Reflection\ReflectionClass;
use Roave\BetterReflection\Reflector\Exception\IdentifierNotFound;
use Roave\BetterReflection\SourceLocator\Type\SourceLocator;
use function assert;
class ClassReflector implements Reflector
{
/** @var SourceLocator */
private $sourceLocator;
public function __construct(SourceLocator $sourceLocator)
{
$this->sourceLocator = $sourceLocator;
}
/**
* Create a ReflectionClass for the specified $className.
*
* @return ReflectionClass
*
* @throws IdentifierNotFound
*/
public function reflect(string $className) : Reflection
{
$identifier = new Identifier($className, new IdentifierType(IdentifierType::IDENTIFIER_CLASS));
$classInfo = $this->sourceLocator->locateIdentifier($this, $identifier);
assert($classInfo instanceof ReflectionClass || $classInfo === null);
if ($classInfo === null) {
throw Exception\IdentifierNotFound::fromIdentifier($identifier);
}
return $classInfo;
}
/**
* Get all the classes available in the scope specified by the SourceLocator.
*
* @return ReflectionClass[]
*/
public function getAllClasses() : array
{
/** @var ReflectionClass[] $allClasses */
$allClasses = $this->sourceLocator->locateIdentifiersByType(
$this,
new IdentifierType(IdentifierType::IDENTIFIER_CLASS)
);
return $allClasses;
}
}