phpactor / class-to-file
库用于将类名转换为文件路径,反之亦然
0.5.2
2022-10-08 08:32 UTC
Requires
- php: ^7.4 || ^8.0
- psr/log: ^1.0 || ^2.0 || ^3.0
- symfony/filesystem: ^4.2 || ^5.0 || ^6.0
Requires (Dev)
- ergebnis/composer-normalize: ^2.0
- friendsofphp/php-cs-fixer: ^3.0
- phpspec/prophecy-phpunit: ^2.0
- phpstan/phpstan: ^1.0
- phpunit/phpunit: ^9.0
- symfony/var-dumper: ^6.0 || ^5.0
This package is auto-updated.
Last update: 2024-08-26 09:32:50 UTC
README
此库提供将类名猜测/转换成文件路径以及反之亦然的便利设施。
它使用composer的自动加载功能,利用PSR-0和PSR-4来猜测最佳候选者。
使用方法
// require the composer autoloader for the class you want to investigate $autoloader = require(__DIR__ . '/vendor/autoload.php'); // for file candidates $converter = ClassFileConverter::fromComposerAutoloader($autoloader); $candidates = $classToFile->classToFileCandidates(ClassName::fromString('Foobar\\Barfoo\\MyClass')); echo (string) $candidates->empty(); // return true if there are no candidates echo (string) $candidates->best(); // path to the "best" candidate // or for class candidates $candidates = $classToFile->fileToClassCandidates(FilePath::fromString('lib/Foobar/BarFoo/MyClass.php'));
Composer没有提供类的文件路径吗?
是的,它提供了,但仅限于类存在时。此类的一个目的是能够确定一个可能不存在的类的文件路径(例如在新的文件中生成一个类)。
你可能也想要这样做,同时不污染你的自动加载环境(不幸的是,此库目前会污染自动加载器,但未来可以避免这种情况)。
为什么你想从文件名确定类呢?
很高兴你这么问!这在你想在一个空文件中生成一个空类时很有用。
当单个自动加载器不够用时
在某些异常情况下,你可能有一个拥有多个composer自动加载器的项目,这通过ChainFileToClass和ChainClassToFile类得到支持,或者最简单的方式是通过外观。
$converter = ClassFileConverter::fromComposerAutoloaders([ $autoloader1, $autoloader2 ]);
贡献
此包是开源的,欢迎贡献!请随意在此存储库上提交一个pull request。
支持
- 在主要的Phpactor存储库上创建一个issue。
- 加入Slack上的
#phpactor
频道,在Symfony Devs频道。