必须手动执行composer dump-autoload的情况包括:新增类文件且路径已在autoload.psr-4中声明、移动类文件并同步更新命名空间和psr-4映射、修改composer.json中的autoload配置、切换git分支引入未映射类、ci中使用--no-autoloader后补加载。

不用每次改代码都跑 composer dump-autoload,它只在类文件位置、命名空间或 composer.json 中 autoload 配置变更时才真正需要。
哪些操作后必须手动执行 composer dump-autoload
它不是“刷新缓存”,而是重写 vendor/autoload_*.php 映射文件。以下情况不执行就必然报 Class not found:
- 新增了类文件(如
src/Services/PaymentService.php),且该路径已在composer.json的autoload.psr-4中声明(如"App\": "src/") - 移动类文件(如从
app/Http/Controllers搬到app/Actions),且同步改了命名空间和composer.json中的 PSR-4 路径映射 - 在
composer.json里新增或修改了autoload.psr-4、autoload.classmap或autoload.files字段 - 切换 Git 分支后,新分支引入了未被当前 autoload 映射覆盖的类(常见于 feature 分支带 dev-only 类)
- CI 流水线中用了
composer install --no-autoloader,之后需补上dump-autoload才能加载类
哪些操作后完全不需要执行
改类内部逻辑、修 bug、加注释、调方法参数——只要没动文件路径、命名空间、composer.json 的 autoload 配置,就和 dump-autoload 无关。
围绕关键发现、作用机制、临床相关性及研究局限性展开讨论。适用于撰写或优化任何生物医学论文的“讨论(Discussion)”部分——包括结果解读、与既往文献关联、阐释意外发现、界定研究局限性,以及撰写结论。当用户输入以下任一指令时也会自动触发该功能: - “write my discussion” - “help me discuss my findings” - “how do I compare to prior studies” - “write the limitations par
-
AppHttpControllersHomeController里改了index()方法体 → 不用跑 - 把
return $user->name;改成return strtoupper($user->name);→ 不用跑 - 只运行
composer install或composer update→ 它们默认已触发 autoload 重建,无需额外执行
composer dump-autoload -o 到底干了啥?为什么有时像没用
-o(即 --optimize)会生成 vendor/composer/autoload_classmap.php,把所有可扫描到的类硬编码进一张查找表。但它不解决配置错误,只加速已有映射的查找。
- 它只扫描
composer.json中autoload(不含autoload-dev)声明的路径;autoload-dev下的测试类不会进 classmap - 如果 PSR-4 路径配错了(比如
"App\": "srcc/"少了个c),-o再快也加载不到 —— 先确保映射本身正确 - Composer 2.x + PHP 7.4+ 下,
dump-autoload -o不再触发完整 classmap 扫描,除非项目明确定义了"classmap": ["src/"]或加了--classmap-authoritative - 生成后记得清 OPCache:
php -r "opcache_reset();",否则 PHP 可能还在用旧的 autoload_static 实例
排查 Class not found 时最该检查的三处
别急着重跑命令,先看底层是否对齐:
- 打开
vendor/composer/autoload_psr4.php,搜索你的命名空间前缀(如App\),确认对应路径(如src/)存在且拼写准确(注意结尾反斜杠、大小写) - 检查类文件名是否严格匹配类名:类
AppHttpControllersHomeController必须放在src/Http/Controllers/HomeController.php,不能是homecontroller.php或HomeController.class.php - Linux/macOS 上,文件系统区分大小写;Windows 下可能“假装”能加载错名文件,但部署后立刻崩 —— 别信本地表现
真正容易被忽略的是:dump-autoload 成功执行 ≠ 自动加载通了。它只是按当前配置“照着写”,写错的配置会原样落盘。所以出问题时,第一反应不该是“再跑一遍”,而是“配置和文件结构到底对不对”。










