Laravel - Composer无法找到服务提供者类

时间:2015-11-13 07:02:40

标签: php laravel composer-php laravel-5.1

我一直在创建Laravel package(中间件)。我的文件夹结构如下所示:

laravel-censor/
    config/
        sensor.php
    src/
        CensorMiddleware.php
        LaravelCensorServiceProvider.php
    composer.json

composer.json的内容是:

{
    "name": "kamranahmedse/laravel-censor",
    ...
    ...
    "require": {
        "php" : ">=5.4.0",
        "laravel/framework": "^5.1.11"
    },
    "autoload": {
        "psr-4": {
            "KamranAhmed\\LaravelCensor\\": "src/"
        }
    },
    "minimum-stability": "stable"
}

我已将其发布到packagist,可以通过github找到。现在安装后

composer require kamranahmedse/laravel-censor

当我将软件包的服务提供商添加到providers

中的config/app.php数组时
KamranAhmed\LaravelCensor\LaravelCensorServiceProvider::class

然后运行

php artisan vendor:publish

问题

无法找到服务提供程序类并抛出未找到类的异常。任何人都可以指出我在这里做错了什么吗?为什么作曲家不能自动加载这个类?

我现在已经研究了一个多小时了,无法弄清楚为什么作曲家没有自动加载这个课程的问题。此外,我已经检查过,名称空间和类名都是正确的:

# LaravelCensorServiceProvider.php
namespace KamranAhmed\LaravelCensor;
...
class LaravelCensorServiceProvider extends ServiceProvider
{ ... }

解决方案

原来,作曲家有一些缓存。清除作曲家缓存php artisan clear-compiled后运行composer clear就可以了。

1 个答案:

答案 0 :(得分:0)

我可以安装您的软件包并执行php artisan vendor:publish而不会出现任何问题,您是否尝试过composer dumpautoload?和php artisan clear-compiled