Je suis en train de tester un élément factice de mon propre avec un fournisseur de services, mais j'obtenir cette erreur:Fournisseur de service soulevant une erreur. La classe qu'il fournit, il ne le trouve pas
FatalErrorException in ProviderRepository.php line 146: Class 'Luismartin\Notificador\Notificador' not found
Ceci est la notificador classe, situé en fournisseur/luismartin/notificador/src/Notificador.php (j'ai couru une décharge-compositeur autoload après sa création):
<?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...
}
}
son fournisseur de services , placé dans app/fournisseurs/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());
});
}
}
Il a été ajouté dans config \ app.php:
'providers' => [
//...,
Luismartin\Notificador\Notificador::class,
],
Et enfin, le contrôleur méthode dans laquelle je suis essayant d'utiliser le composant notificador:
private function notificar($mensaje)
{
$admin = User::where('name', 'admin')->first();
$notificador = App::make('Notificador');
$notificador->notificar($admin, $mensaje);
}
Que dois-je faire?
J'ai également essayé de supprimer composer.lock et d'exécuter la mise à jour du composeur. Voici ce qu'il affiche à la fin:
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.....
Supprimez votre fichier composer.lock et réexécutez la mise à jour du composeur. Aussi, changer l'emplacement du fichier app.php en 'App/Providers/NotificadorServiceProvider :: class' (faites-le avant la mise à jour du composeur) –
Comment ce paquet est-il installé? Compositeur? Si c'est le cas, gardez le fournisseur de services dans le dossier du fournisseur avec votre autre code. –
J'ai supprimé composer.lock et exécuté la mise à jour du composeur. Il affiche également une erreur liée à ma classe. Je l'ai ajouté ci-dessus. –