phpactor/class-to-file

库用于将类名转换为文件路径,反之亦然

0.5.2 2022-10-08 08:32 UTC

README

CI Scrutinizer Code Quality

此库提供将类名猜测/转换成文件路径以及反之亦然的便利设施。

它使用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频道。