mouf/classname-mapper

提供了一种查找类将在哪些PHP文件中被引用的方法。

v1.0.2 2019-01-17 16:26 UTC

This package is auto-updated.

Last update: 2024-08-23 02:49:15 UTC


README

Latest Stable Version Total Downloads Latest Unstable Version License Scrutinizer Code Quality Build Status Coverage Status

类名映射器

这是什么?

有些包会生成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\\"];