我正在尝试使用服务提供商测试我自己的虚拟组件,但是我收到了这个错误:
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.....
答案 0 :(得分:0)
我发现了错误。在提供程序列表中声明它时,我将服务提供程序类混淆了组件类:
'providers' => [
//...,
App\Providers\NotificadorServiceProvider::class,
],
现在可行。