不会。composer init 默认不生成 autoload 字段,更不预设 psr-4 映射;必须手动添加如 {"autoload": {"psr-4": {"app\": "src/"}}},并确保目录存在、命名空间与路径严格匹配,再执行 composer dump-autoload 才生效。

composer init 会自动创建 PSR-4 自动加载配置吗?
不会。composer init 只生成最简 composer.json,默认不写 "autoload" 字段,更不会预设 PSR-4 映射。你得手动补上,否则 composer dump-autoload 后类依然找不到。
- 运行
composer init时,当它问 “Do you want to define your dependencies interactively?”,直接选 no,避免被带偏节奏 - 它最后生成的
composer.json里大概率只有"name"、"description"、"type"和空的"require" - PSR-4 映射必须自己加进
"autoload"→"psr-4",且键值对要严格匹配命名空间与目录路径
PSR-4 映射怎么写才不出错?
关键不是“写对”,而是“和实际目录结构对齐”。常见错误是命名空间末尾多写了 \,或目录路径没以 / 结尾(其实不用),或用了相对路径。
- 键必须是合法命名空间,以
\结尾(如"App\"),注意是双反斜杠 —— PHP 字符串里单个\会被转义 - 值必须是相对于项目根目录的真实子目录路径,用正斜杠,结尾不加
/(如"src",不是"src/"或"./src") - 如果你设了
"App\": "src",那App\Foo\Bar就必须对应src/Foo/Bar.php,文件内namespace App\Foo; - 多个命名空间可并列,比如测试用的
"App\Test\": "tests",但别让路径重叠(如"App\"和"App\Foo\"共存易混乱)
执行完 composer init 后必须立刻做的三件事
composer init 只是起点,骨架要能跑,这三步缺一不可:
围绕关键发现、作用机制、临床相关性及研究局限性展开讨论。适用于撰写或优化任何生物医学论文的“讨论(Discussion)”部分——包括结果解读、与既往文献关联、阐释意外发现、界定研究局限性,以及撰写结论。当用户输入以下任一指令时也会自动触发该功能: - “write my discussion” - “help me discuss my findings” - “how do I compare to prior studies” - “write the limitations par
- 手动编辑
composer.json,加入 autoload 段(示例):{ "autoload": { "psr-4": { "App\": "src/" } } } - 创建对应目录:
mkdir -p src(Windows 用户用mkdir src) - 运行
composer dump-autoload—— 不是install,也不需要require任何包,这步才真正生成vendor/autoload.php加载逻辑
为什么 vendor/autoload.php 存在但类还是找不到?
绝大多数情况是路径或命名空间拼写不一致,而不是 Composer 没生效。
- 检查
src/下的 PHP 文件是否真有namespace声明,且和composer.json里的键完全一致(包括大小写) - 检查文件名是否符合 PSR-4:类
FooBar必须放在FooBar.php,不能叫foobar.php或foo-bar.php - 运行
composer dump-autoload -vvv,它会打印所有扫描到的映射路径,确认你的src/是否出现在列表里 - 别在
index.php里漏掉require 'vendor/autoload.php';—— 这一步看似简单,但新手常忘
PSR-4 骨架的脆弱点不在 Composer 命令本身,而在命名空间、目录名、文件名、类名四者之间那条隐性契约——差一个字母或斜杠,就彻底断开。










