/** * Returns a path to the file for given class name * * @param string $className Name of the class * * @return string|false Path to the file with given class or false if not found */ public function locateClass($className) { $filePath = $this->loader->findFile($className); if (!empty($filePath)) { $filePath = PathResolver::realpath($filePath); } return $filePath; }
/** * File namespace constructor * * @param string $fileName Name of the file * @param string $namespaceName Name of the namespace * @param Namespace_|null $namespaceNode Optional AST-node for this namespace block */ public function __construct($fileName, $namespaceName, Namespace_ $namespaceNode = null) { $fileName = PathResolver::realpath($fileName); if (!$namespaceNode) { $namespaceNode = ReflectionEngine::parseFileNamespace($fileName, $namespaceName); } $this->namespaceNode = $namespaceNode; $this->fileName = $fileName; }
/** * Parses a file and returns an AST for it * * @param string $fileName Name of the file * @param string|null $fileContent Optional content of the file * * @return \PhpParser\Node[] */ public static function parseFile($fileName, $fileContent = null) { $fileName = PathResolver::realpath($fileName); if (isset(self::$parsedFiles[$fileName])) { return self::$parsedFiles[$fileName]; } if (isset(self::$maximumCachedFiles) && count(self::$parsedFiles) === self::$maximumCachedFiles) { array_shift(self::$parsedFiles); } if (!isset($fileContent)) { $fileContent = file_get_contents($fileName); } $treeNode = self::$parser->parse($fileContent); $treeNode = self::$traverser->traverse($treeNode); self::$parsedFiles[$fileName] = $treeNode; return $treeNode; }
/** * ReflectionFile constructor. * * @param string $fileName Name of the file to reflect * @param null|array|Node[] $topLevelNodes Optional corresponding list of AST nodes for that file */ public function __construct($fileName, $topLevelNodes = null) { $fileName = PathResolver::realpath($fileName); $this->fileName = $fileName; $this->topLevelNodes = $topLevelNodes ?: ReflectionEngine::parseFile($fileName); }