Sì quello è corretto, il EventServiceProvider
è il posto migliore per esso.
Tuttavia è possibile creare osservatori per mantenerlo pulito. Ti darò un rapido esempio.
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)
{
}
}
Il Observer
sarà il luogo in cui il saved
, updated
, created
, ecc .. saranno eseguiti funzioni.
Maggiori informazioni su osservatori: http://laravel.com/docs/5.0/eloquent#model-observers
non è così laravel –
E 'vero che la documentazione raccomanda un approccio alternativo, ma non dice esplicitamente che questo è male. In una certa misura è più chiaro qui perché posso guardare il mio modello e so quali eventi hanno ascoltatori anziché fare il tifo in giro in un fornitore di servizi che punta a un osservatore da qualche parte. Forse se hai molti ascoltatori è meglio altrove. – omarjebari
Sono d'accordo con Omar. a volte devi allontanarti dall'essere troppo fanatico. questa soluzione risolve bene il dilemma in un modo che non ti lascerà andare WTF in 8 mesi quando devi modificare qualcosa. –