求助:PSR-4标准类自动加载不符合规范问题排查
PSR-4自动加载配置错误分析与解决
你的问题出在命名空间前缀与文件目录的映射不匹配,导致Composer无法正确识别类文件的位置。
错误原因
当前composer.json中PSR-4配置将命名空间前缀Esimowl\Mobimatter\映射到./src/:
{ "autoload": { "psr-4": { "Esimowl\\Mobimatter\\": "./src/" } } }
按照PSR-4规范,这个配置意味着:
- 命名空间
Esimowl\Mobimatter\Product对应的文件路径应该是./src/Product.php
但你的实际文件路径是./src/Esimowl/Mobimatter/Product.php,相当于在映射目录下又重复了一遍命名空间的层级结构,导致Composer判定不符合规范。
解决方案(二选一)
方案1:调整composer.json的命名空间映射(推荐)
将命名空间前缀改为Esimowl\,映射到./src/,这样命名空间的层级会直接对应到src下的目录结构:
{ "name": "esimowl/mobimatter", "description": "An awesome plugin created by Esimowl", "type": "wordpress-plugin", "autoload": { "psr-4": { "Esimowl\\": "./src/" } } }
修改后执行命令重新生成自动加载文件:
composer dumpautoload -o
方案2:调整文件目录结构
如果不想修改composer配置,可以将Product.php直接移动到src/目录下,保持命名空间Esimowl\Mobimatter不变。但这种方式会破坏命名空间与目录结构的对应关系,不推荐使用。
内容的提问来源于stack exchange,提问作者jameshwart lopez
相关产品推荐
相关产品推荐

