通过composer自动加载多个PHP项目

时间:2014-08-15 17:20:27

标签: php composer-php spl-autoload-register psr-0

假设我的文件夹布局为

projectA
projectA\src
projectA\vendor\autoload.php

projectB
projectB\src
projectB\vendor\autoload.php

projectC
projectC\src
projectC\vendor\autoload.php

这些项目需要处于同一水平,并且需要彼此共存,例如: projectA可能会使用projectBprojectC以及代码中的代码,因此无法将其放入vendor文件夹中。

问题是:每个项目中的autoload.php能够自动加载自己的srcvendor文件夹,但是如何为其他项目自动加载?

假设他们的邻居项目将文件夹名称作为PHP名称空间,是否可以设置autoload.php(通过作曲家),以便将来当我添加新项目文件夹时,自动加载将神奇地工作?

1 个答案:

答案 0 :(得分:1)

您可以在每个项目中使用自定义自动加载配置编写composer.json。 示例:

项目A:

"autoload": {
    "psr-0": {
        "ProjectB\\": "path/ProjectB/src/",
        "ProjectC\\": "path/ProjectC/src/"
    }
},

项目B:

"autoload": {
    "psr-0": {
        "ProjectA\\": "path/ProjectA/src/",
        "ProjectC\\": "path/ProjectC/src/"
    }
},

Composer被设想用于管理单个项目的依赖项。加载更多不同项目的autoload.php并不是一个好主意。 但是使用这种方法,您可以为每个项目创建一个完整的自动加载器