多个Composer Autoloader的执行顺序

 老翅几回寒_332 发布于 2023-01-15 11:55

我有一个包含多个模块的项目.每个模块本身都使用Composer,并且大部分独立于其他模块.

但是,某些模块共享具有不同版本的依赖项.这些依赖项在大多数情况下是向后兼容的,并使用语义版本控制.

我想确保具有最高语义版本的依赖关系优先.这将允许所有模块共享相同的依赖项,并且这些依赖项的向后兼容性将确保没有任何中断.

我的计划是通过控制我调用require_once各个自动加载器的顺序来做到这一点.下面的代码是一个示例,实际上是生成的.

require_once(__DIR__ . '/moduleA/vendor/autoload.php');
require_once(__DIR__ . '/moduleB/vendor/autoload.php');
require_once(__DIR__ . '/moduleC/vendor/autoload.php');

我做的主要假设是,如果在另一个之前需要自动加载器,它将优先于后者.

我发现但事实恰恰相反.最后出现的自动加载器似乎优先于其他自动加载器.

考虑一个类Foo\MyClass是这些模块之间共享的依赖关系.我期待上面的加载顺序,Foo\MyClass将从中获取moduleA/vendor/....

相反,它正在形成moduleC/vendor/....

我可以翻转生成的顺序以解决此问题,但我想验证PHP自动加载器是否存在可预测的顺序.

是否有PHP执行自动加载器的顺序?多个Composer自动加载器会以任何方式影响这个吗?

谢谢.

撰写答案
今天,你开发时遇到什么问题呢?
立即提问
热门标签
PHP1.CN | 中国最专业的PHP中文社区 | PNG素材下载 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有