执行 composer install 不生成 psr-4 自动加载规则,仅安装依赖;新类找不到是因为 autoload_psr4.php 未更新,必须手动运行 composer dump-autoload 或使用 composer install -o、composer update 等触发自动刷新的命令。

执行 composer install 本身**不解析、不验证、也不生成 PSR-4(或 PSR-0)自动加载规则**——它只安装依赖包,不会碰你项目自身的 autoload 配置。
为什么 composer install 后新类还是找不到?
常见现象:改完 composer.json 的 "psr-4" 配置,运行 composer install,然后 new AppControllerUser() 仍报 Class not found。
-
composer install只负责读取composer.lock、下载 vendor 包、执行脚本,它默认跳过 dump-autoload 步骤 - 你的项目 autoload 映射仍停留在上次
dump-autoload生成的旧状态(比如vendor/composer/autoload_psr4.php没更新) - 哪怕
composer.json写对了,映射表没刷新,加载器就查不到新路径
哪些情况会触发自动 dump-autoload?
只有特定命令会强制重生成 autoload 文件,composer install 不在其中:
围绕关键发现、作用机制、临床相关性及研究局限性展开讨论。适用于撰写或优化任何生物医学论文的“讨论(Discussion)”部分——包括结果解读、与既往文献关联、阐释意外发现、界定研究局限性,以及撰写结论。当用户输入以下任一指令时也会自动触发该功能: - “write my discussion” - “help me discuss my findings” - “how do I compare to prior studies” - “write the limitations par
-
composer install --optimize-autoloader或composer install -o:此时会顺带执行dump-autoload --optimize -
composer update:默认触发dump-autoload(除非加--no-autoloader) -
composer require xxx或composer remove xxx:修改依赖后自动重生成 - 手动运行
composer dump-autoload才是最直接、最可控的方式
PSR-4 映射表实际在哪?怎么确认它生效了?
关键文件是 vendor/composer/autoload_psr4.php,它是一个纯 PHP 数组,不是 JSON 或动态扫描结果:
- 打开这个文件,搜索你的命名空间前缀(如
'App\'),确认键存在且值指向正确路径(如['src/']) - 如果没出现,说明
dump-autoload没执行,或者配置写错位置(比如塞进了"autoload-dev"而非顶层"autoload") - 运行
composer show -s可查看当前注册的所有 PSR-4 映射,比翻文件更直观 - 注意:该文件内容完全由
composer.json中"autoload": {"psr-4": {...}}解析而来,不依赖目录是否存在、不校验类文件是否真实可读
最易被忽略的一点:PSR-4 前缀必须以双反斜杠结尾("App\"),少一个就变成 PSR-0 兼容模式,而 Composer 2.x+ 已彻底弃用该模式——此时映射直接被忽略,连警告都不给。改完配置后不跑 dump-autoload,等于什么都没做。










