如何让Composer在自动加载时遵循PSR-0规范?(旧项目兼容)

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

如何让Composer在自动加载时遵循PSR-0规范?(旧项目兼容)-第1张图片-佛山资讯网

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_ClassMy/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

发布评论 0条评论)

还木有评论哦,快来抢沙发吧~