Unlimited Plugins, WordPress themes, videos & courses! Unlimited asset downloads! From $16.50/m
Advertisement
  1. Code
  2. Laravel 5
Code

Eventi personalizzati in Laravel

by
Difficulty:BeginnerLength:MediumLanguages:

Italian (Italiano) translation by Ibnukholil (you can also view the original English article)

In questo articolo, ci accingiamo a esplorare le basi della gestione degli eventi in Laravel. È una delle caratteristiche importanti che voi, come sviluppatore, dovrebbe avere nel proprio arsenale nel framework desiderato. Come ci muoviamo, ci sarà anche afferrare questa opportunità per creare un esempio reale di un evento personalizzato e un ascoltatore, e che è l'obiettivo finale di questo articolo pure.

Il concetto di eventi in Laravel è basato su un modello di progettazione di software molto popolare — il modello dell'osservatore. In questo modello, il sistema dovrebbe per generare eventi quando succede qualcosa, e si potrebbe definire listener di ascoltare questi eventi e reagire di conseguenza. È una caratteristica davvero utile in un modo che consente di separare i componenti in un sistema che altrimenti avrebbe provocato codice di accoppiamento.

Ad esempio, che si desidera notificare tutti i moduli in un sistema quando qualcuno accede al tuo sito. Così, permette loro di reagire a questo evento di accesso, se si tratta di mandare una notifica email o in-app o per quella materia tutto ciò che vuole reagire a questo evento di accesso.

Nozioni di base di eventi e listener

In questa sezione, esploreremo il modo di Laravel per implementare gli eventi e i listener nel quadro principale. Se si ha familiarità con l'architettura di Laravel, probabilmente sapete che Laravel implementa il concetto di un provider di servizi che consente di iniettare diversi servizi in un'applicazione.

Analogamente, Laravel fornisce una classe di EventServiceProvider.php incorporata che ci permette di definire il mapping di listener di eventi per un'applicazione.

Andare avanti e tirare nel file app/Providers/EventServiceProvider.php.

Diamo un'occhiata da vicino la proprietà $listen, che consente di definire una serie di eventi e i listener associati. Le chiavi dell'array corrispondono agli eventi in un sistema, e loro valori corrispondono agli ascoltatori che verranno attivati quando viene generato l'evento corrispondente in un sistema.

Preferisco andare attraverso un esempio reale di dimostrarla ulteriormente. Come probabilmente sapete, Laravel fornisce un sistema di autenticazione incorporato che facilita caratteristiche come login, registrati e simili.

Si supponga che si desidera inviare la notifica via email, come misura di sicurezza, quando un utente accede all'applicazione. Se Laravel non supporta la funzionalità di listener di evento, potrebbe hanno finito per modificare la classe di base o qualche altro modo per inserire nel codice che manda un'e-mail.

Infatti, sei sul lato più fortunato come Laravel vi aiuta a risolvere questo problema utilizzando il listener di eventi. Let's rivedere il file di app/Providers/EventServiceProvider.php per essere simile al seguente.

Illuminate\Auth\Events\Login è un evento che verrà generato dal plugin Auth quando qualcuno accede a un'applicazione. Noi abbiamo associato quell'evento all'ascoltatore di App\Listeners\SendEmailNotification, pertanto esso sarà attivata per l'evento di accesso.

Naturalmente, è necessario definire la classe di listener di App\Listeners\SendEmailNotification in primo luogo. Come sempre, Laravel consente di creare un codice di modello di un listener utilizzando il comando di artigiano.

Questo comando genera eventi e listener di classi elencate sotto la proprietà di $listen.

Nel nostro caso, l'evento di Illuminate\Auth\Events\Login esiste già, così si crea solo la classe di listener di App\Listeners\SendEmailNotification. Infatti, essa avrebbe creato la classe di evento Illuminate\Auth\Events\Login troppo se non esisteva in primo luogo.

Diamo un'occhiata alla classe di listener creata presso app/Listeners/SendEmailNotification.php.

È il metodo di handle che verrà richiamato con dipendenze appropriate ogni volta che l'ascoltatore è attivato. Nel nostro caso, l'argomento $event deve contenere informazioni contestuali relative all'evento di accesso — registrato nelle informazioni utente.

E possiamo usare l'oggetto $event per eseguire un'ulteriore elaborazione nel metodo handle. Nel nostro caso, vogliamo inviare l'email di notifica per l'utente connesso.

Il metodo riveduto handle può sembrare qualcosa come:

Ecco come si suppone di utilizzare la funzione eventi in Laravel. Dalla prossima sezione in poi, andremo avanti e creeremo un evento personalizzato e una classe di ascolto associata.

Creare un evento personalizzato

Lo scenario di esempio che andremo ad utilizzare per il nostro esempio è simile al seguente:

  • Un'applicazione ha bisogno di cancellare la cache in un sistema in certi punti. Ci avrai generare l'evento di CacheClear insieme alle informazioni contestuali quando un'applicazione non sopraccennato. Passeremo la cache chiavi di gruppo insieme a un evento che è stato cancellato.
  • Altri moduli in un sistema possono ascoltare l'evento di CacheClear e vuoi implementare il codice che riscalda le cache correlate.

Let's rivedere il file di app/Providers/EventServiceProvider.php e registrare il nostro evento e ascoltatore di mapping personalizzate.

Come potete vedere, abbiamo definito l'evento App\Events\ClearCache e associati classe di listener App\Listeners\WarmUpCache sotto la proprietà di $listen.

Successivamente, abbiamo bisogno di creare file di classe associata. Ricordo che si poteva sempre utilizzare il comando artigianale per generare un codice di modello di base.

Che dovrebbe aver creato la classe di evento alle app/Events/ClearCache.php e la classe di listener a app/Listeners/WarmUpCache.php.

Con poche modifiche, la classe di app/Events/ClearCache.php dovrebbe assomigliare a questo:

Come probabilmente avrete notato, abbiamo aggiunto una nuova proprietà $cache_keys che verrà utilizzato per contenere le informazioni che avrai passati insieme a un evento. Nel nostro caso, passeremo gruppi di cache che sono stati scaricati.

Successivamente, diamo un'occhiata alla classe di listener con un metodo handle aggiornato a app/Listeners/WarmUpCache.php.

Quando viene richiamato il listener, il metodo handle viene passato con l'istanza dell'evento associato. Nel nostro caso, dovrebbe essere l'istanza dell'evento ClearCache che verrà passato come primo argomento al metodo handle.

Successivamente, è solo una questione di scorrere ogni chiave di cache e riscaldando le cache associate.

Ora, abbiamo tutto a posto per testare le cose contro. Let's rapidamente creare un file di controller presso app/Http/Controllers/EventController.php a dimostrare come si potrebbe generare un evento.

In primo luogo, abbiamo passato una serie di chiavi di cache come primo argomento durante la creazione di un'istanza dell'evento ClearCache.

La funzione di supporto di evento viene utilizzata per generare un evento da qualsiasi punto all'interno di un'applicazione. Quando viene generato l'evento, Laravel chiama tutti i listener in ascolto di quel particolare evento.

Nel nostro caso, l'ascoltatore di App\Listeners\WarmUpCache è impostare per ascoltare l'evento App\Events\ClearCache. Così, il metodo handle dell'ascoltatore App\Listeners\WarmUpCache viene richiamato quando l'evento viene generato da un controller. Il resto è di scaldare le cache che sono state cancellate!

Ecco come è possibile creare eventi personalizzati nella propria applicazione e lavoro con loro.

Che cosa è un Sottoscrittore di eventi?

Il Sottoscrittore di eventi consente di sottoscrivere più listener di eventi in un unico luogo. Se si desidera logicamente i listener di eventi di gruppo o si desidera contenere eventi crescenti in un unico luogo, è il Sottoscrittore di eventi che stai cercando.

Se noi avessimo attuato gli esempi discussi finora in questo articolo utilizzando il Sottoscrittore di eventi, potrebbe sembrare questo.

È il metodo subscribe che è responsabile di listener registrati. Il primo argomento del metodo subscribe è l'istanza della classe Illuminate\Events\Dispatcher che è possibile utilizzare per associare gli eventi con gli ascoltatori tramite il metodo listen.

Il primo argomento del metodo ascolta è un evento che si desidera ascoltare, e il secondo argomento è un listener che verrà chiamato quando viene generato l'evento.

In questo modo, è possibile definire più eventi e listener nella classe Sottoscrittore stesso.

Classe di evento sottoscrittore non prelevata automaticamente. È necessario registrarlo nella classe EventServiceProvider.php sotto la proprietà di $subscriber, come illustrato nel seguente frammento di codice.

Così che era la classe di evento sottoscrittore a vostra disposizione, e con che abbiamo raggiunto la fine di questo articolo pure.

Conclusione

Oggi abbiamo discusso un paio delle caratteristiche più interessanti di Laravel — eventi e ascoltatori. Sono basati sul modello di progettazione osservatore che consente di generare eventi a livello di applicazione e consentire altri moduli ascoltare quegli eventi e reagire di conseguenza.

Basta alzarsi per accelerare in Laravel o cercando di espandere la vostra conoscenza, sito o applicazione con estensioni? Abbiamo una varietà di cose che si può studiare nel mercato di Envato.

Sentitevi liberi di esprimere i tuoi pensieri utilizzando il feed qui sotto!

Advertisement
Advertisement
Advertisement
Advertisement
Looking for something to help kick start your next project?
Envato Market has a range of items for sale to help get you started.