Composer 不检查 PSR 标准,它仅负责依赖安装;PSR 相关问题实为 autoload 配置与文件路径不匹配所致,需通过 dump-autoload 调试、检查 autoload_psr4.php 及使用静态分析工具(如 PHPStan/PSALM)针对性扫描。

Composer 本身不检查 PSR 标准
Composer 是依赖管理工具,composer install 或 composer update 只负责下载和安装包,它不会验证代码是否符合 PSR-0、PSR-4、PSR-12 等规范。你看到的“vendor 目录不符合 PSR 标准”,通常是运行时类加载失败或静态分析报错,而非 Composer 自身检测出的问题。
真正要查的是 autoload 配置与实际目录结构是否匹配
PSR-4(最常用)要求命名空间路径映射必须与文件系统路径一致。如果 composer.json 中的 "autoload": {"psr-4": {...}} 写错了,或者第三方包自身没遵循 PSR-4,composer dump-autoload 生成的 vendor/composer/autoload_psr4.php 就会映射错误,导致 class not found。
围绕关键发现、作用机制、临床相关性及研究局限性展开讨论。适用于撰写或优化任何生物医学论文的“讨论(Discussion)”部分——包括结果解读、与既往文献关联、阐释意外发现、界定研究局限性,以及撰写结论。当用户输入以下任一指令时也会自动触发该功能: - “write my discussion” - “help me discuss my findings” - “how do I compare to prior studies” - “write the limitations par
- 运行
composer dump-autoload -d(加-d显示调试信息),观察是否有警告如Warning: Ambiguous class resolution或Class XXX is not in the same namespace as its filename suggests - 检查
vendor/composer/autoload_psr4.php,确认关键命名空间是否被正确注册,比如"Monolog\": ["src/"]对应的目录是否存在且含正确命名空间声明 - 用
composer show vendor/package-name查该包是否声明了autoload,有些老旧包只写autoload.files或干脆没写,会导致 PSR-4 自动加载失效
用 phpstan 或 psalm 检查 vendor 里的代码风格(PSR-12)
PSR-12 是代码风格标准,Composer 不管这事。想检查 vendor 中的代码是否格式合规,得靠静态分析工具——但注意:一般不建议检查 vendor 目录,因为那是第三方代码,改它没意义,还可能因版本更新被覆盖。
- 若真要扫描(比如审计某个内部 fork 的包),先在
phpstan.neon中显式包含路径:parameters: paths: [vendor/myorg/private-package/src] -
psalm --show-info=true vendor/myorg/private-package/src可输出 PSR-12 相关警告(需 Psalm 配置启用psr插件) - 更现实的做法是:只对
src/和tests/扫描,用composer.json的"autoload-dev"确保测试类也能被正确加载
常见报错其实和 PSR 无关,而是 autoloader 缓存没刷新
修改了 composer.json 的 autoload 配置后,忘记执行 composer dump-autoload,或用了 --no-scripts 跳过自动加载器重建,就会出现“类存在但找不到”的假性 PSR 错误。
-
composer dump-autoload --optimize生成优化后的映射表(适合生产环境) - 开发中遇到类找不到,先删掉
vendor/composer/autoload_*.php,再重跑composer dump-autoload - 留意 PHP OPcache:如果启用了 OPcache 且没配置
opcache.file_cache_only=0,修改autoload_psr4.php后可能仍读旧缓存,需重启 PHP-FPM 或调用opcache_reset()
vendor/composer/autoload_psr4.php 里那几行数组是不是你预期的样子。

















