%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/FunctionReflector.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\ReflectionFunction;
use Roave\BetterReflection\Reflector\Exception\IdentifierNotFound;
use Roave\BetterReflection\SourceLocator\Type\SourceLocator;
use function assert;
class FunctionReflector implements Reflector
{
/** @var SourceLocator */
private $sourceLocator;
/** @var ClassReflector */
private $classReflector;
public function __construct(SourceLocator $sourceLocator, ClassReflector $classReflector)
{
$this->sourceLocator = $sourceLocator;
$this->classReflector = $classReflector;
}
/**
* Create a ReflectionFunction for the specified $functionName.
*
* @return ReflectionFunction
*
* @throws IdentifierNotFound
*/
public function reflect(string $functionName) : Reflection
{
$identifier = new Identifier($functionName, new IdentifierType(IdentifierType::IDENTIFIER_FUNCTION));
$functionInfo = $this->sourceLocator->locateIdentifier($this->classReflector, $identifier);
assert($functionInfo instanceof ReflectionFunction || $functionInfo === null);
if ($functionInfo === null) {
throw Exception\IdentifierNotFound::fromIdentifier($identifier);
}
return $functionInfo;
}
/**
* Get all the functions available in the scope specified by the SourceLocator.
*
* @return ReflectionFunction[]
*/
public function getAllFunctions() : array
{
/** @var ReflectionFunction[] $allFunctions */
$allFunctions = $this->sourceLocator->locateIdentifiersByType(
$this,
new IdentifierType(IdentifierType::IDENTIFIER_FUNCTION)
);
return $allFunctions;
}
}