我一直在创建一个Laravel 包 https://github.com/kamranahmedse/laravel-censor(中间件)。我的文件夹结构如下所示:
laravel-censor/
config/
sensor.php
src/
CensorMiddleware.php
LaravelCensorServiceProvider.php
composer.json
以及内容composer.json
is:
{
"name": "kamranahmedse/laravel-censor",
...
...
"require": {
"php" : ">=5.4.0",
"laravel/framework": "^5.1.11"
},
"autoload": {
"psr-4": {
"KamranAhmed\\LaravelCensor\\": "src/"
}
},
"minimum-stability": "stable"
}
我已将其发布到包装主义者 https://packagist.org/packages/kamranahmedse/laravel-censor并可以通过找到github https://github.com/kamranahmedse/laravel-censor。现在安装后
composer require kamranahmedse/laravel-censor
当我将包的服务提供商添加到providers
数组中config/app.php
KamranAhmed\LaravelCensor\LaravelCensorServiceProvider::class
And run
php artisan vendor:publish
问题
它无法找到服务提供者类并抛出类未找到异常。任何人都可以指出我在这里做错了什么吗?为什么 Composer 无法自动加载此类?
我已经研究这个问题一个多小时了,但无法弄清楚为什么作曲家不自动加载此类的问题。另外,我已经检查过,命名空间和类名都是正确的:
# LaravelCensorServiceProvider.php
namespace KamranAhmed\LaravelCensor;
...
class LaravelCensorServiceProvider extends ServiceProvider
{ ... }
Solution
事实证明,composer 有一些缓存。跑步php artisan clear-compiled
清除作曲家缓存后composer clear
成功了。