Composer 2.0 起完全移除 PSR-0 支持,旧项目可通过 classmap 手动映射实现兼容,推荐逐步迁移到 PSR-4。

Composer 默认已不再支持 PSR-0,自 Composer 2.0 起完全移除了对 PSR-0 的自动加载逻辑。若你维护的是旧项目(如基于 Symfony 2.0–2.7、Zend Framework 1 或早期 Laravel),仍需 PSR-0 兼容,可通过手动配置 autoload 并配合类映射或文件映射实现“伪 PSR-0”行为。
确认项目是否真需 PSR-0
PSR-0 已被废弃多年(2014 年被 PSR-4 取代),官方不再推荐。先检查:
- 你的类名是否形如
Vendor_Name_Module_ClassName,且目录结构为Vendor/Name/Module/ClassName.php - 是否存在大量未命名空间的顶层类(如
My_Class→My/Class.php) -
composer.json中是否已有"psr-0": {...}字段(Composer 1.x 兼容但不生效于 2.x+)
用 classmap 模拟 PSR-0 行为
最稳妥的兼容方式:将所有 PSR-0 风格的类文件显式加入 classmap,让 Composer 扫描并生成静态映射表,绕过命名空间解析逻辑。
在 composer.json 中添加:
"autoload": {
"classmap": [
"library/",
"src/",
"modules/"
]
}登录后复制
然后运行:
标签: php laravel js json composer app
还木有评论哦,快来抢沙发吧~