如何为未在Composer中指定自动加载的第三方库配置自动加载(无需fork)
无需fork第三方库即可调整其自动加载规则的实现方案
完全可以在项目根目录的composer.json中配置调整任意第三方库的自动加载规则,全程不需要fork第三方库,也不需要修改vendor目录下该库本身的composer.json文件。
具体操作方法
Composer在生成自动加载索引时,会优先读取项目根目录的自动加载配置,根项目的autoload规则优先级高于所有第三方依赖自带的自动加载规则,可以直接补充、覆盖任意依赖的自动加载设置,操作步骤为:
- 打开项目根目录的
composer.json文件 - 在
autoload字段下,按照PSR-4、PSR-0、classmap、files等你需要的自动加载规则格式,直接填写目标第三方库对应的类命名空间、文件路径映射关系即可 - 配置完成后执行
composer dump-autoload命令,重新生成自动加载索引文件即可生效
举个常见的配置示例:
{ "autoload": { "psr-4": { "目标第三方库的命名空间\\": "vendor/对应作者/对应库名/src/" }, "files": [ "vendor/对应作者/对应库名/全局辅助函数文件.php" ] } }
关于之前尝试用补丁修改第三方库composer.json方案的说明
你之前尝试用补丁工具修改第三方库自带composer.json的方案,本身就不是调整自动加载的正确路径:
- 目前常用的Composer补丁工具确实不支持对依赖的composer.json文件做编辑操作,就算通过其他方式绕开限制完成了补丁修改,这类修改也会在每次执行
composer update更新依赖版本时被重新拉取的文件覆盖,长期维护成本极高。 - 自动加载配置的设计逻辑本身就允许根项目自定义覆盖依赖的规则,完全没有必要绕路去修改依赖包内部的配置文件。
注意:不要手动直接修改vendor目录下任何第三方库的配置文件,这类改动不属于项目的版本控制范围,每次重新执行composer安装、更新操作时都会被重置,不具备长期有效性。
内容的提问来源于stack exchange,提问作者user1414202
相关产品推荐
相关产品推荐

