PHP编写器:在自动加载函数中设置动态变量路径

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

我最近开始使用composer自动加载我的类。但是我发现我必须单独上传每个目录,因为我存储了每个类的
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"
            ]
        }
    }
}

没问题。很高兴我能帮上点忙。