Composer 自动加载器找不到类
Posted
技术标签:
【中文标题】Composer 自动加载器找不到类【英文标题】:Composer autoloader cannot find class 【发布时间】:2020-01-21 19:13:03 【问题描述】:我对类的类加载有疑问。
安装我的包后找不到类,这是它的错误消息:
Illuminate\Contracts\Container\BindingResolutionException : Target class [SundayIT\ChatbotAdmin\Commands\DBM_RealtimeStats] does not exist.
这是自动加载器遗漏的类的前几行:
<?php
namespace SundayIT\ChatbotAdmin\Commands;
use Illuminate\Console\Command;
use Illuminate\Support\Facades\DB;
use Symfony\Component\Console\Input\InputInterface;
use Symfony\Component\Console\Output\OutputInterface;
class DBM_RealtimeStats extends Command
这是包的composer.json
文件的相关部分
"autoload":
"psr-4":
"SundayIT\\ChatbotAdmin\\": "src/"
,
这是文件结构:
我错过了什么?我已经尝试在这里检查其他问题,但我还没有找到解决方案。谢谢
【问题讨论】:
感谢您的回答,是的,我确实尝试过,它给出了相同的消息:` Illuminate\Contracts\Container\BindingResolutionException :目标类 [SundayIT\ChatbotAdmin\Commands\DBM_RealtimeStats] 不存在。在 C:\Users\molba\PhpstormProjects\example_chatbot\vendor\laravel\framework\src\Illuminate\Container\Container.php:809 ` 您是否尝试将您的班级重命名为DbmRealtimeStats
并将文件重命名为DbmRealtimeStats.php
?
尝试在 composer.json 中添加 classmap
部分 > 自动加载部分
【参考方案1】:
根据PSR-4 standard 类名不应包含下划线。
下划线在全限定类名的任何部分都没有特殊含义。
这就是为什么将类重命名为 DbmRealtimeStats
并将文件重命名为 DbmRealtimeStats.php
有效(如 here 所述)。
【讨论】:
以上是关于Composer 自动加载器找不到类的主要内容,如果未能解决你的问题,请参考以下文章