PHP Composer:自动加载函数中的设置动态变量路径



我最近开始使用作曲家自动加载我的课程。但是我发现,在存储src/目录和tests/目录foreach类时,我必须单独上传每个目录。例如:

  "Core\Router\": "system/Core/Router/src/",
  "Core\Router\Tests\": "system/Core/Router/tests/",
  "Core\DatabaseManager\": "system/Core/DatabaseManager/src/",
  "Core\DatabaseManager\Tests\": "system/Core/DatabaseManager/tests/"

有没有办法做到这一点,以便作曲家读取可变路径?例如

  "Core\{VARIABLE_PATH}\": "system/Core/{VARIABLE_PATH}/src/",
  "Core\{VARIABLE_PATH}\Tests\": "system/Core/{VARIABLE_PATH}/tests/"

no,"动态路径"不支持。"组件"文件夹布局,其中" SRC"one_answers"测试"在子文件夹中绝对不错,但是目前尚无对此结构的"自动"自动加载支持。

当您为system/core/文件夹使用一个名称空间"应用程序命名空间"时,将扫描所有类(包括SRC和测试),并成为自动加载映射的一部分。换句话说,自动加载将起作用,但是当考虑生产使用情况时,您的地图将很大,因为它也包括测试类。这可能会导致速度降低。如果您不在乎这一点,那么一切都很好:使用单个AppNamespaceCore映射到顶级文件夹systemCore

时,自动加载可以正常工作

如果您在乎,则可以尝试通过使用autoloadautoload-dev部分手动将srctests划分,并在顶部名称空间下列出单个组件文件夹。这很乏味,但会导致生产的较小分类图(NO-DEV)。

您可以定义多个dirs搜索,例如:

composer.json

{
    "autoload": {
        "psr-4": {
            "App\Namespace\": 
            [
                "ComponentOne/src", 
                "ComponentTwo/src"
            ]
        }
    },
    "autoload-dev": {
        "psr-4": {
            "App\Namespace\Tests": 
            [
                "ComponentOne/tests", 
                "ComponentTwo/tests"
            ]
        }
    }
}