Ja, das ist richtig, das EventServiceProvider
ist der beste Platz für sie registrieren.
Sie können jedoch Beobachter erstellen, um sie sauber zu halten. Ich werde dir ein schnelles Beispiel geben.
EventServiceProvider
<?php
namespace App\Providers;
use Illuminate\Contracts\Events\Dispatcher as DispatcherContract;
use Illuminate\Foundation\Support\Providers\EventServiceProvider as ServiceProvider;
use App\Models\Users;
use App\Observers\UserObserver;
/**
* Event service provider class
*/
class EventServiceProvider extends ServiceProvider
{
/**
* Boot function
*
* @param DispatcherContract $events
*/
public function boot(DispatcherContract $events)
{
parent::boot($events);
Users::observe(new UserObserver());
}
}
UserObserver
<?php
namespace App\Observers;
/**
* Observes the Users model
*/
class UserObserver
{
/**
* Function will be triggerd when a user is updated
*
* @param Users $model
*/
public function updated($model)
{
}
}
Die Observer
wird der Ort sein, wo die saved
, updated
, created
, etc .. Funktionen ausgeführt werden.
Mehr Informationen über Beobachter: http://laravel.com/docs/5.0/eloquent#model-observers
es ist nicht Laravel Weise –
Es ist wahr, dass die Dokumentation einen alternativen Ansatz empfiehlt jedoch nicht explizit sagen, dass dies schlecht ist. Bis zu einem gewissen Grad ist es hier klarer, da ich mein Modell betrachten kann und ich weiß, welche Ereignisse Zuhörer haben, im Gegensatz zu einem Dienstanbieter, der irgendwo auf einen Beobachter verweist. Vielleicht, wenn Sie viele Zuhörer haben, ist es anderswo besser. – omarjebari
Ich stimme Omar zu. Manchmal muss man sich davon abhalten, zu fanatisch zu sein. Diese Lösung löst das Dilemma auf eine Art und Weise, die Sie nicht in 8 Monaten in WTF versetzt, wenn Sie etwas optimieren müssen. –