composer dump-autoload 是首选命令,因为它仅刷新自动加载映射,不重装依赖、速度快且安全,适用于新增类、修改 autoload 配置或拉取代码后类未找到等场景。

直接运行 composer dump-autoload 就能重新生成 autoload 文件,不需要重装依赖或清空 vendor。
为什么 composer dump-autoload 是首选命令
它只刷新自动加载映射(vendor/autoload.php 和 vendor/composer/autoload_*.php),不碰已安装的包,速度快、安全、可逆。常见于以下场景:
- 新增了类但没被自动加载(比如加了新
src/下的类,但没改composer.json的autoload配置) - 修改了
composer.json中的autoload或autoload-dev字段 - 从 Git 拉取代码后发现新类报
Class not found
注意:该命令默认不优化(即不生成 classmap 索引),如需生成更高效的扁平化映射,加 -o 参数:composer dump-autoload -o;若项目含大量文件且部署环境无写权限,建议加 --no-dev 排除开发依赖的自动加载逻辑。
composer install 和 composer update 也会触发 autoload 重建,但不该为这目的用它们
这两个命令本质是依赖管理操作,副作用才是刷新 autoload。滥用会导致意外行为:
工作流任务拆解与模型编排技能。使用场景:(1) 收到复杂工作任务需要拆解为可执行步骤,(2) 需要为不同步骤选择最合适的模型,(3) 需要跟踪工作流进度和模型使用情况,(4) 长时间任务卡住需要问题诊断和解决方案。
-
composer install会按composer.lock重装所有包——可能覆盖你本地修改过的 vendor 内容 -
composer update会升级依赖版本,可能引入不兼容变更 - 两者都比
dump-autoload慢得多,尤其在 CI/CD 中浪费资源
除非你刚删了 vendor/ 或 composer.lock,否则别用它们来“修复自动加载”。
常见错误:执行后类还是找不到?检查这三处
autoload 文件生成成功 ≠ 类一定能被加载。典型卡点:
-
composer.json里autoload的路径配置写错,比如写成"src/"却实际类在"lib/"目录下 - 新加的类文件没加
.php后缀,或文件名与类名不满足 PSR-4 规则(例如类AppServicesUserService必须放在src/Services/UserService.php) - 用了
classmap方式但忘了在执行dump-autoload前手动运行composer dump-autoload -o(普通dump-autoload不处理classmap)
验证是否生效:查看 vendor/composer/autoload_psr4.php 是否包含你新增的命名空间映射;或临时加一行 var_dump(class_exists('Your\Full\Class\Name')); 测试。
最易被忽略的是:修改 composer.json 后忘记运行任何命令——autoload 文件不会自己更新。哪怕只是改了个路径,也得手动敲一次 composer dump-autoload。

















