答案是自定义类未被 composer 自动加载,因其未在 composer.json 的 autoload 中配置。需检查 psr-4/classmap 配置、命名空间与路径匹配、大小写一致性,并执行 dump-autoload -o 生效。

不是 composer install 覆盖了你的类,而是它重置了自动加载映射,而你的自定义类压根没被 Composer 纳入 autoload 规则。
自定义类不在 composer.json 的 autoload 配置里
执行 composer install 会完全按 composer.lock 和 composer.json 重建 vendor/ 和自动加载文件,但不会扫描你项目里任意目录下的类。如果你把类放在 app/extend/、src/ 或 library/ 这类非标准路径,且没在 composer.json 中声明,它们就进不了 vendor/composer/autoload_psr4.php。
- 检查
composer.json的"autoload"字段是否存在,比如:"psr-4": { "App\": "app/" } - 确认你的类命名空间(如
Extend\Helper)是否匹配配置中的 key,且文件路径(如extend/Helper.php)是否落在 value 指向的目录下 - 如果只是临时加了个
Helper.php到根目录,Composer 默认完全无视——它不猜路径,只认配置
执行 install 后没触发 dump-autoload
composer install 本身不会重新生成 autoload 映射,除非你改过 autoload 配置并手动运行 composer dump-autoload -o。尤其当你在 composer.json 新增了 PSR-4 映射后直接 install,新规则根本不会生效。
围绕关键发现、作用机制、临床相关性及研究局限性展开讨论。适用于撰写或优化任何生物医学论文的“讨论(Discussion)”部分——包括结果解读、与既往文献关联、阐释意外发现、界定研究局限性,以及撰写结论。当用户输入以下任一指令时也会自动触发该功能: - “write my discussion” - “help me discuss my findings” - “how do I compare to prior studies” - “write the limitations par
- 改完
composer.json的 autoload 后,必须运行:composer dump-autoload -o - 验证是否成功:打开
vendor/composer/autoload_psr4.php,搜索你的命名空间前缀,看对应路径是否已写入 - 如果用的是 classmap 方式(如
"classmap": ["library/"]),需加--classmap-authoritative才能覆盖旧映射
vendor/autoload.php 被重复引入或引入时机错误
有些项目在 public/index.php 引入了一次 vendor/autoload.php,又在中间件、命令行脚本或测试文件里再次 require 它,导致 PHP 报 Fatal error: Cannot redeclare class ——表面是“类找不到”,实际是加载中断后后续类全挂了。
- 入口文件(如
public/index.php、artisan)引入一次就够了,其他地方禁止再require - 单元测试中应在
phpunit.xml的<php><ini name="auto_prepend_file" value="vendor/autoload.php"></ini></php>或通过bootstrap属性指定,而非每个*Test.php顶部手写 - 检查是否有 IDE 自动生成的桩文件、第三方 SDK 示例代码偷偷
require了 autoload
Linux 服务器上大小写路径不一致
Windows 开发时把类文件命名为 extend/helper.php,但命名空间写成 Extend\Helper;部署到 Linux 后,PSR-4 匹配失败,因为 extend/ 目录 ≠ Extend/ 目录。
- 命名空间前缀(如
"Extend\": "extend/")和物理路径必须严格一致,包括大小写 - 类文件名必须首字母大写(
Helper.php),且与类名完全一致(class Helper) - 运行
composer dump-autoload -v,若看到No files found for Extend\*类提示,基本就是路径或大小写对不上
最常被忽略的一点:你以为类“本来就能用”,其实只是之前靠 IDE 缓存、OPcache 或开发环境宽松模式蒙混过关;composer install 是一次硬重置,它只认配置、路径、大小写这三样东西,少一个都加载不了。










