composer.json 中配置自动加载路径而非修改 vendor/autoload.php;psr-4 映射命名空间到目录(如 "App\": "src/"),要求路径与命名空间严格一致;classmap 扫描无命名空间类;files 加载全局函数文件;autoload-dev 用于测试类;所有配置修改后必须运行 composer dump-autoload。

composer.json 里配自动加载路径,不是改 vendor/autoload.php —— 后者是生成结果,手动改完下次 composer dump-autoload 就被覆盖。
psr-4 映射命名空间到目录(推荐)
这是最常用、最规范的方式,要求类文件路径和命名空间严格对应。
- 配置写法:
"psr-4": { "App\": "src/" }表示所有以App开头的类,都从src/目录下找 -
AppControllerUserController必须对应src/Controller/UserController.php,文件名、类名、命名空间大小写必须完全一致 - 路径值建议以
/结尾(如"src/"),否则"src"可能意外匹配同名文件src.php - 多个命名空间可并列声明,互不干扰:
"Database\Seeders\": "database/seeders/" - 修改后必须运行
composer dump-autoload,否则新类不生效
classmap 扫描无命名空间或老旧类文件
适合没命名空间、扁平目录(如 lib/)、或第三方库不守 PSR 规范的情况。
围绕关键发现、作用机制、临床相关性及研究局限性展开讨论。适用于撰写或优化任何生物医学论文的“讨论(Discussion)”部分——包括结果解读、与既往文献关联、阐释意外发现、界定研究局限性,以及撰写结论。当用户输入以下任一指令时也会自动触发该功能: - “write my discussion” - “help me discuss my findings” - “how do I compare to prior studies” - “write the limitations par
- 配置写法:
"classmap": [ "lib/", "legacy/Database.class.php" ],路径相对于composer.json所在目录 - 写目录会递归扫描所有
.php和.inc文件;写具体文件只扫那个文件本身 - 不支持通配符(
"lib/*.php"无效),也不能用绝对路径(以/开头会被忽略) - 执行
composer dump-autoload后,映射表生成在vendor/composer/autoload_classmap.php,可直接检查它是否含目标类名 - 如果同时配了 psr-4 和 classmap,psr-4 优先级更高;类名冲突时,psr-4 匹配上的先加载
files 加载全局函数或常量文件
用于 require_once 那些纯函数、define()、const 的 PHP 文件,不参与类加载流程。
- 配置写法:
"files": [ "src/helpers.php", "config/constants.php" ],路径必须带.php扩展名 - 路径是相对于
composer.json的,不能写成"./src/helpers.php"或"/src/helpers.php" - 数组顺序即加载顺序,前面的文件可被后面的覆盖(比如后者重新定义同名函数)
- 入口文件(如
index.php)必须显式require __DIR__ . '/vendor/autoload.php';,否则files根本不会执行 - 若文件里有语法错误或重复函数定义,整个 autoload 初始化失败,后续所有类/函数都不可用
autoload-dev 与排除路径的注意事项
测试类、stub、examples 等不应进生产 autoload,但容易被误扫。
-
autoload-dev是独立字段,和autoload互不影响;测试类应放这里,如"Tests\": "tests/" -
autoload.exclude仅 Composer 5.0+ 支持,且只对 psr-4/psr-0 路径生效,对classmap和files无效 -
exclude-from-classmap只在你显式声明了classmap时才起作用,且只影响dump-autoload -o阶段 - 最稳妥的“排除”方式:根本别把它写进任何
autoload或autoload-dev路径里
composer dump-autoload 这一步不是可选的——它不自动触发,也不随 composer install 隐式执行。漏掉这步,再正确的配置也等于没写。

















