【发布时间】:2016-02-14 17:18:46
【问题描述】:
我一直在创建一个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
当我将包的服务提供者添加到config/app.php 中的providers 数组时
KamranAhmed\LaravelCensor\LaravelCensorServiceProvider::class
然后运行
php artisan vendor:publish
问题
找不到服务提供者类,抛出类未找到异常。任何人都可以指出我在这里做错了什么吗?为什么作曲家无法自动加载此类?
我已经研究了一个多小时,无法弄清楚为什么作曲家没有自动加载这个类的问题。另外,我检查了命名空间和类名都是正确的:
# LaravelCensorServiceProvider.php
namespace KamranAhmed\LaravelCensor;
...
class LaravelCensorServiceProvider extends ServiceProvider
{ ... }
解决方案
原来作曲家有一些缓存。在清除作曲家缓存 composer clear 后运行 php artisan clear-compiled 就可以了。
【问题讨论】:
标签: php laravel composer-php laravel-5.1