rkr / class-finder
一个从文件列表中查找完全限定类名的工具
1.0.1
2022-08-16 20:45 UTC
Requires
- nikic/php-parser: ^4.14
Requires (Dev)
- phpstan/phpstan: ^1.8
- phpunit/phpunit: ^9.5
README
您必须提供要搜索php-class的文件路径列表。在幕后,使用 nikic/php-parser
来解析文件。这意味着PHP文件不是直接解析。这比 haydenpierce/class-finder
使用的方案慢得多。
composer require rkr/class-finder
示例
ClassFinder::findClassesFromDirectory
use Kir\ClassFinder\ClassFinder; $startDir = __DIR__ . '/src'; $classNames = ClassFinder::findClassesFromDirectory($startDir); print_r(iterator_to_array($classNames)); // Kir\ClassFinder\NodeVisitor // Kir\ClassFinder\ClassFinder // Kir\ClassFinder\ClassTools // Kir\ClassFinder\ClassFinderResult // Kir\ClassFinder\ClassFile
ClassFinder::findClassesFromIterableFileList
use Kir\ClassFinder\ClassFinder; //region Gather the files $startDir = __DIR__ . '/src'; $directory = new RecursiveDirectoryIterator($startDir, FilesystemIterator::FOLLOW_SYMLINKS | FilesystemIterator::SKIP_DOTS | FilesystemIterator::KEY_AS_PATHNAME | FilesystemIterator::CURRENT_AS_PATHNAME); $iterator = new RecursiveIteratorIterator($directory); $files = new CallbackFilterIterator($iterator, fn(string $path) => preg_match('{\\.p(hp\\d?|html)$}i', $path)); //endregion $classNames = ClassFinder::findClassesFromIterableFileList($files); print_r(iterator_to_array($classNames)); // Kir\ClassFinder\NodeVisitor // Kir\ClassFinder\ClassFinder // Kir\ClassFinder\ClassTools // Kir\ClassFinder\ClassFinderResult // Kir\ClassFinder\ClassFile