【问题标题】:Composer autoloader cannot find classComposer 自动加载器找不到类
【发布时间】: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 部分 > 自动加载部分

标签: laravel autoloader composer-php


【解决方案1】:

根据PSR-4 standard 类名不应包含下划线。

下划线在全限定类名的任何部分都没有特殊含义。

这就是为什么将类重命名为 DbmRealtimeStats 并将文件重命名为 DbmRealtimeStats.php 有效(如 here 所述)。

【讨论】:

    猜你喜欢
    • 2017-02-28
    • 1970-01-01
    • 1970-01-01
    • 2019-04-20
    • 2017-07-04
    • 2018-06-01
    • 1970-01-01
    • 2016-04-27
    • 2017-02-01
    相关资源
    最近更新 更多