我最近开始使用作曲家自动加载我的课程。但是我发现,在存储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
。
如果您在乎,则可以尝试通过使用autoload
和autoload-dev
部分手动将src
和tests
划分,并在顶部名称空间下列出单个组件文件夹。这很乏味,但会导致生产的较小分类图(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"
]
}
}
}