classmap 是 Composer 自动生成的“文件路径到类名”静态映射表,适用于非 PSR 规范遗留代码、纯函数文件及极致性能场景;需在 composer.json 中声明扫描路径,并手动运行 dump-autoload 更新。
Composer 的 classmap 不是“手动配置类映射”的工具,而是通过扫描文件自动生成的加载机制;它不支持运行时动态注册或手写映射规则。
classmap 是什么,什么时候该用它
classmap 是 Composer 生成的一种“文件路径到类名”的静态映射表,本质是一张 PHP 数组(vendor/composer/autoload_classmap.php),由 composer dump-autoload --classmap-authoritative 或 composer install 自动构建。它适用于:
- 没有遵循 PSR-0/PSR-4 命名规范的遗留代码(比如类名含下划线、目录结构混乱)
- 纯函数文件或含全局类定义的杂项脚本(如
helpers.php、defines.php) - 需要极致加载性能且能接受“修改文件后必须重生成”的场景(因 classmap 不支持自动发现新文件)
如何让 composer 扫描并生成 classmap
在 composer.json 中声明要扫描的目录或文件,Composer 会在执行 dump-autoload 时递归解析其中所有 PHP 文件,提取 class、interface、trait、enum 声明并建立路径映射:
{
"autoload": {
"classmap": [
"src/legacy/",
"src/utils/helpers.php",
"lib/"
]
}
}
注意: