/** * {@inheritDoc} */ public function locateIdentifier(Reflector $reflector, Identifier $identifier) { try { $closureData = $this->closureAnalyzer->analyze($this->closure); } catch (ClosureAnalysisException $closureAnalysisException) { if (stripos($closureAnalysisException->getMessage(), 'Two closures were declared on the same line') !== false) { throw TwoClosuresOneLine::fromClosureAnalysisException($closureAnalysisException); } throw $closureAnalysisException; } if (!isset($closureData['ast']) || !$closureData['ast'] instanceof ClosureNode) { return null; } $locatedSource = new LocatedSource('<?php ' . $closureData['code'], $closureData['reflection']->getFileName()); $namespaceNode = null; if (isset($closureData['location']['namespace'])) { $namespaceNode = new Namespace_(new Name($closureData['location']['namespace'])); } return $this->conversionStrategy->__invoke($reflector, $closureData['ast'], $locatedSource, $namespaceNode); }
/** * @param Reflector $reflector * @param Node $node * @param LocatedSource $locatedSource * @param Node\Stmt\Namespace_|null $namespace * @return Reflection|null */ private function reflectNode(Reflector $reflector, Node $node, LocatedSource $locatedSource, Node\Stmt\Namespace_ $namespace = null) { return $this->astConversionStrategy->__invoke($reflector, $node, $locatedSource, $namespace); }