jerowork/file-class-reflector
最新稳定版本:0.3.0
Composer 安装命令:
composer require jerowork/file-class-reflector
包简介
Get fully-qualified class names based on directory and file paths.
README 文档
README
Get fully-qualified classnames based on directory and file paths.
Installation
Install via Composer:
composer require jerowork/file-class-reflector
Usage
The ClassReflector makes use of the nikic/php-parser
package to retrieve the fully-qualified class name from a file.
Basic usage:
use Jerowork\FileClassReflector\NikicParser\NikicParserClassReflectorFactory; // Create a new ClassReflector instance directly via a static factory method $reflector = NikicParserClassReflectorFactory::createInstance(); // Add necessary directories and/or files and reflect $reflector ->addDirectory(__DIR__ . '/some/directory') ->reflect(); // Get all \ReflectionClass found in files $classes = $reflector->getClasses();
The ClassReflectorFactory can also be instantiated via the constructor.
In this way the factory can be added to a DI container.
use Jerowork\FileClassReflector\FileFinder\RegexIterator\RegexIteratorFileFinder; use Jerowork\FileClassReflector\NikicParser\NikicParserClassReflectorFactory; use PhpParser\NodeTraverser; use PhpParser\ParserFactory; // Create the factory $factory = new NikicParserClassReflectorFactory( new RegexIteratorFileFinder(), (new ParserFactory())->create(ParserFactory::PREFER_PHP7), new NodeTraverser(), ); // Create a new ClassReflector instance $reflector = $factory->create(); // ...
DI service definition
As a good practice we should always 'program to interfaces, not implementations', you should add this to your DI container.
PSR-11 Container example:
use Jerowork\FileClassReflector\ClassReflectorFactory; use Jerowork\FileClassReflector\FileFinder\FileFinder; use Jerowork\FileClassReflector\FileFinder\RegexIterator\RegexIteratorFileFinder; use Jerowork\FileClassReflector\NikicParser\NikicParserClassReflectorFactory; use PhpParser\NodeTraverser; use PhpParser\ParserFactory; use Psr\Container\ContainerInterface; return [ ClassReflectorFactory::class => static function (ContainerInterface $container): ClassReflectorFactory { return new NikicParserClassReflectorFactory( new RegexIteratorFileFinder(), (new ParserFactory())->create(ParserFactory::PREFER_PHP7), new NodeTraverser(), ); }, FileFinder::class => static fn (): FileFinder => new RegexIteratorFileFinder(), ];
Symfony YAML-file example:
services: _defaults: autowire: true autoconfigure: true Jerowork\FileClassReflector\ClassReflectorFactory: class: Jerowork\FileClassReflector\NikicParser\NikicParserClassReflectorFactory Jerowork\FileClassReflector\FileFinder\FileFinder: class: Jerowork\FileClassReflector\FileFinder\RegexIterator\RegexIteratorFileFinder PhpParser\ParserFactory: ~ PhpParser\Parser: factory: ['@PhpParser\ParserFactory', 'create'] arguments: [1] # 1 = ParserFactory::PREFER_PHP7 PhpParser\NodeTraverser: ~
统计信息
- 总下载量: 2.04k
- 月度下载量: 0
- 日度下载量: 0
- 收藏数: 3
- 点击次数: 0
- 依赖项目数: 1
- 推荐数: 0
其他信息
- 授权协议: MIT
- 更新时间: 2021-08-29