/** * Take an AST node in some located source (potentially in a namespace) and * convert it to a Reflection * * @param Reflector $reflector * @param Node $node * @param LocatedSource $locatedSource * @param Node\Stmt\Namespace_|null $namespace * @return Reflection|null */ public function __invoke(Reflector $reflector, Node $node, LocatedSource $locatedSource, Node\Stmt\Namespace_ $namespace = null) { if ($node instanceof Node\Stmt\ClassLike) { return ReflectionClass::createFromNode($reflector, $node, $locatedSource, $namespace); } if ($node instanceof Node\FunctionLike) { return ReflectionFunction::createFromNode($reflector, $node, $locatedSource, $namespace); } return null; }
/** * @param Node $node * @param LocatedSource $locatedSource * @param Node\Stmt\Namespace_|null $namespace * @return Reflection|null */ private function reflectNode(Node $node, LocatedSource $locatedSource, Node\Stmt\Namespace_ $namespace = null) { if ($node instanceof Node\Stmt\Class_) { return ReflectionClass::createFromNode($node, $locatedSource, $namespace); } if ($node instanceof Node\Stmt\Function_) { return ReflectionFunction::createFromNode($node, $locatedSource, $namespace); } return null; }
public function testGetLocatedSource() { $node = new Function_('foo'); $locatedSource = new LocatedSource('<?php function foo() {}', null); $reflector = new FunctionReflector(new StringSourceLocator('<?php')); $functionInfo = ReflectionFunction::createFromNode($reflector, $node, $locatedSource); $this->assertSame($locatedSource, $functionInfo->getLocatedSource()); }
/** * @param Node $node * @param LocatedSource $locatedSource * @param Node\Stmt\Namespace_|null $namespace * @return Reflection|null */ private function reflectNode(Node $node, LocatedSource $locatedSource, Node\Stmt\Namespace_ $namespace = null) { if ($node instanceof Node\Stmt\ClassLike) { return ReflectionClass::createFromNode(new ClassReflector($this->sourceLocator), $node, $locatedSource, $namespace); } if ($node instanceof Node\Stmt\Function_) { return ReflectionFunction::createFromNode(new FunctionReflector($this->sourceLocator), $node, $locatedSource, $namespace); } return null; }