PHP编写器:在自动加载函数中设置动态变量路径
我最近开始使用composer自动加载我的类。但是我发现我必须单独上传每个目录,因为我存储了每个类的PHP编写器:在自动加载函数中设置动态变量路径,php,composer-php,autoload,Php,Composer Php,Autoload,我最近开始使用composer自动加载我的类。但是我发现我必须单独上传每个目录,因为我存储了每个类的src/目录和tests/目录。例如: "Core\\Router\\": "system/Core/Router/src/", "Core\\Router\\Tests\\": "system/Core/Router/tests/", "Core\\DatabaseManager\\": "system/Core/DatabaseManager/src/", "Core\\Dat
src/
目录和tests/
目录。例如:
"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/"
有没有办法让composer读取变量路径?e、 g
"Core\\{VARIABLE_PATH}\\": "system/Core/{VARIABLE_PATH}/src/",
"Core\\{VARIABLE_PATH}\\Tests\\": "system/Core/{VARIABLE_PATH}/tests/"
不支持“动态路径”。
“组件”文件夹布局,其中“src”和“tests”位于子文件夹内,这绝对不错,但目前还没有对该结构的“自动”自动加载支持
当您为system/core/
文件夹使用一个名称空间“application\namespace”时,所有类都会被扫描(包括src和tests)并成为自动加载映射的一部分。换句话说,自动加载会起作用,但是当考虑到产品使用时,您的映射将非常大,因为它还包括测试类。这可能会导致速度下降。如果您不关心这一点,那么一切都很好:当使用映射到顶部文件夹\system\Core
的单个App\Namespace\Core
时,自动加载可以正常工作
如果您愿意,那么您可以尝试使用自动加载
和自动加载开发
部分并在顶部名称空间下列出各个组件文件夹,手动划分src
和测试
。这很乏味,但会导致用于生产的类映射更小(没有开发)
您可以定义多个要搜索的目录,如下所示:
composer.json
{
"autoload": {
"psr-4": {
"App\\Namespace\\":
[
"ComponentOne/src",
"ComponentTwo/src"
]
}
},
"autoload-dev": {
"psr-4": {
"App\\Namespace\\Tests":
[
"ComponentOne/tests",
"ComponentTwo/tests"
]
}
}
}
没问题。很高兴我能帮上点忙。