服务提供商引发错误。它提供的课程未找到

时间:2016-06-21 19:46:50

标签: php laravel service-provider

我正在尝试使用服务提供商测试我自己的虚拟组件,但是我收到了这个错误:

  

ProviderRepository.php第146行中的FatalErrorException:Class   '找不到Luismartin \ Notificador \ Notificador

这是 Notificador类,位于 vendor / luismartin / notificador / src / Notificador.php (我在创建后运行了一个composer dump-autoload):< / p>

<?php
namespace Luismartin\Notificador;

use Illuminate\Foundation\Auth\User;
use Illuminate\Mail\Mailer;


class Notificador
{
    private $mailer;

    public function __construct(Mailer $mailer)
    {
        $this->mailer = $mailer;
    }

    public function notificar(User $usuario, $mensaje)
    {
        // notifier actions...
    }

}

服务提供商,放在 app / Providers / NotificadorServiceProvider.php 中:

<?php
namespace App\Providers;

use Illuminate\Mail\Mailer;
use Illuminate\Support\ServiceProvider;
use Luismartin\Notificador\Notificador;

class NotificadorServiceProvider extends ServiceProvider
{

    public function register()
    {
        $this->app->singleton('Notificador', function() {
            return new Notificador(new Mailer());
        });
    }

}

已添加到 config \ app.php

'providers' => [
     //...,
     Luismartin\Notificador\Notificador::class,
],

最后,我正在尝试使用Notificador组件的控制器方法:

private function notificar($mensaje)
{
        $admin = User::where('name', 'admin')->first();

        $notificador = App::make('Notificador');

        $notificador->notificar($admin, $mensaje);
}

我还应该做些什么?

我也尝试删除composer.lock并运行composer update。这是它最后显示的内容:

Writing lock file
Generating autoload files
> Illuminate\Foundation\ComposerScripts::postUpdate
> php artisan optimize
PHP Fatal error:  Class 'Luismartin\Notificador\Notificador' not found in /home/vagrant/Code/helpdesk/vendor/laravel/framework/src/Illuminate/Foundation/ProviderRepository
PHP Stack trace.....

1 个答案:

答案 0 :(得分:0)

我发现了错误。在提供程序列表中声明它时,我将服务提供程序类混淆了组件类:

'providers' => [
     //...,
     App\Providers\NotificadorServiceProvider::class,
],

现在可行。