mouf / classname-mapper
提供了一种查找类将在哪些PHP文件中被引用的方法。
v1.0.2
2019-01-17 16:26 UTC
Requires
- php: >=5.4.0
Requires (Dev)
- phpunit/phpunit: ~4.0 | ~5.0
- satooshi/php-coveralls: ~1.0
README
类名映射器
这是什么?
有些包会生成PHP类。当一个包生成一个类时,它需要知道应该将PHP文件放在哪个目录中,以便自动加载器可以自动加载这个类。这个包就是为了帮助你找到写入PHP文件的目录。
这个包包含一个简单的ClassNameMapper
PHP类。
这个类将完全限定类名(FQCN)映射到根据你的composer.json
文件中定义的PSR-0或PSR-4规则的一个或多个可能的文件名。
因此,你将FQCN传递给ClassNameMapper
,它将返回一个由Composer自动加载器检查的文件路径列表。
如果你想生成PHP类,但又不知道将这些类放在哪里,这非常有用。
示例
假设你的composer.json
文件看起来像这样
{ "require" : { "mouf/classname-mapper": "~1.0" }, "autoload" : { "psr-4" : { "Acme\\" : "src/" } } }
现在,假设你想创建一个Acme\Controller\MyController
类。你应该把它放在哪里?对于一个PHP开发者来说,很明显这个类应该放在src/Controller/MyController.php
。但对于一个PHP程序来说,这是一个棘手的问题。ClassNameMapper
就是为了解决这个问题而存在的。
use Mouf\Composer\ClassNameMapper; // This will create a mapper from your root composer file. $mapper = ClassNameMapper::createFromComposerFile(); $files = $mapper->getPossibleFileNames('Acme\Controller\MyController'); // $files == ["src/Controller/MyController.php"];
你还可以查询ClassNameMapper
,以获取你的composer.json
文件中配置的所有命名空间列表。
$namespaces = $mapper->getManagedNamespaces(); // $namespaces == ["Acme\\"];