Dans cet article, nous allons explorer les bases de la gestion d'événements à Laravel. C'est l'une des fonctionnalités importantes que vous, en tant que développeur, devriez avoir dans votre arsenal dans le cadre souhaité. A mesure que nous avançons, nous saisirons également cette opportunité pour créer un exemple concret d'événement et d'auditeur personnalisés. C'est également l'objectif ultime de cet article..
Le concept d'événements à Laravel est basé sur un modèle de conception de logiciel très populaire, le modèle d'observateur. Dans ce modèle, le système est supposé déclencher des événements lorsque quelque chose se passe, et vous pouvez définir des écouteurs qui écoutent ces événements et réagissent en conséquence. C'est une fonctionnalité très utile qui vous permet de découpler des composants d'un système qui, autrement, aurait abouti à un code étroitement couplé.
Par exemple, supposons que vous souhaitiez notifier tous les modules d'un système lorsqu'une personne se connecte à votre site. Ainsi, cela leur permet de réagir à cet événement de connexion, qu’il s’agisse d’envoyer un courrier électronique ou une notification intégrée à l’application ou, par ailleurs, tout ce qui veut réagir à cet événement de connexion..
Dans cette section, nous allons explorer la manière dont Laravel met en œuvre des événements et des écouteurs dans le cadre principal. Si vous connaissez l'architecture de Laravel, vous savez probablement que Laravel implémente le concept de fournisseur de services qui vous permet d'injecter différents services dans une application..
De même, Laravel fournit une fonction intégrée EventServiceProvider.php
classe qui nous permet de définir des mappages d'écouteurs d'événements pour une application.
Allez-y et tirez dans la app / Providers / EventServiceProvider.php
fichier.
['App \ Listeners \ EventListener',],]; / ** * Enregistrez des événements pour votre application. * * @return void * / fonction publique boot () parent :: boot (); //
Regardons de près le $ écouter
propriété, qui vous permet de définir un tableau d’événements et des écouteurs associés. Les clés de tableau correspondent aux événements d'un système et leurs valeurs aux écouteurs qui seront déclenchés lorsque l'événement correspondant est déclenché dans un système..
Je préfère passer par un exemple concret pour le démontrer davantage. Comme vous le savez probablement, Laravel fournit un système d’authentification intégré qui facilite des fonctionnalités telles que la connexion, l’enregistrement, etc..
Supposons que vous souhaitiez envoyer la notification par courrier électronique, par mesure de sécurité, lorsque quelqu'un se connecte à l'application. Si Laravel n'a pas pris en charge la fonctionnalité d'écouteur d'événements, vous avez peut-être fini par éditer la classe principale ou par un autre moyen de brancher votre code qui envoie un courrier électronique..
En fait, vous êtes du côté des plus chanceux, car Laravel vous aide à résoudre ce problème en utilisant l'écouteur d'événements. Révisons le app / Providers / EventServiceProvider.php
fichier à ressembler à ce qui suit.
['App \ Listeners \ SendEmailNotification',],]; / ** * Enregistrez des événements pour votre application. * * @return void * / fonction publique boot () parent :: boot (); //
Illuminer \ Auth \ Événements \ Connexion
est un événement qui sera soulevé par le Auth
plugin quand quelqu'un se connecte à une application. Nous avons lié cet événement à la App \ Listeners \ SendEmailNotification
écouteur, donc ça va être déclenché sur l'événement de connexion.
Bien sûr, vous devez définir le App \ Listeners \ SendEmailNotification
classe d'auditeur en premier lieu. Comme toujours, Laravel vous permet de créer un modèle de code d’un auditeur à l’aide de la commande artisan..
Evénement artisanal php: générer
Cette commande génère des classes d’événement et d’écoute listées sous le nom $ écouter
propriété.
Dans notre cas, le Illuminer \ Auth \ Événements \ Connexion
événement existe déjà, donc il ne crée que le App \ Listeners \ SendEmailNotification
classe d'auditeur. En fait, cela aurait créé la Illuminer \ Auth \ Événements \ Connexion
classe d'événement aussi si elle n'existait pas en premier lieu.
Regardons la classe d'écoute créée à app / Auditeurs / SendEmailNotification.php
.
C'est le
manipuler
méthode qui sera appelée avec les dépendances appropriées chaque fois que le programme d'écoute est déclenché. Dans notre cas, le$ événement
l'argument doit contenir des informations contextuelles sur les informations de l'utilisateur connecté à l'événement connecté.Et nous pouvons utiliser le
$ événement
objet d'effectuer d'autres traitements dans lemanipuler
méthode. Dans notre cas, nous voulons envoyer la notification par courrier électronique à l'utilisateur connecté..Le révisé
manipuler
méthode peut ressembler à quelque chose comme:fonction publique descripteur (Login $ event) // obtenir l'adresse email et le nom d'utilisateur de l'utilisateur connecté $ email = $ event-> user-> email; $ username = $ event-> user-> name; // envoyer une notification par courrier électronique à propos de la connexionC'est ainsi que vous êtes censé utiliser les événements de Laravel. A partir de la section suivante, nous allons créer un événement personnalisé et une classe d'écoute associée..
Créer un événement personnalisé
L'exemple de scénario que nous allons utiliser pour notre exemple ressemble à ceci:
CacheClear
événement avec les informations contextuelles quand une application fait ce qui précède. Nous allons passer les clés du groupe de cache avec un événement qui a été effacé.CacheClear
événement et souhaite implémenter un code qui réchauffe les caches associés.Revisitons le app / Providers / EventServiceProvider.php
archiver et enregistrer nos mappages d'événements et d'auditeurs personnalisés.
['App \ Listeners \ WarmUpCache',],]; / ** * Enregistrez des événements pour votre application. * * @return void * / fonction publique boot () parent :: boot (); //
Comme vous pouvez le voir, nous avons défini le App \ Events \ ClearCache
événement et classe d'écoute associée App \ Listeners \ WarmUpCache
sous le $ écouter
propriété.
Ensuite, nous devons créer des fichiers de classe associés. Rappelez-vous que vous pouvez toujours utiliser la commande artisan pour générer un code de modèle de base..
Evénement artisanal php: générer
Cela aurait dû créer la classe d'événement à app / Events / ClearCache.php
et la classe d'auditeur à app / Auditeurs / WarmUpCache.php
.
Avec quelques changements, le app / Events / ClearCache.php
la classe devrait ressembler à ceci:
cache_keys = $ cache_keys; / ** * Récupère les chaînes sur lesquelles l’événement doit être diffusé. * * @return Channel | array * / public function broadcastOn () return new PrivateChannel ('nom de la chaîne');
Comme vous l'avez probablement remarqué, nous avons ajouté une nouvelle propriété $ cache_keys
qui sera utilisé pour stocker des informations qui seront transmises avec un événement. Dans notre cas, nous allons passer les groupes de cache qui ont été vidés..
Ensuite, regardons la classe d’auditeur avec une mise à jour manipuler
méthode à app / Auditeurs / WarmUpCache.php
.
cache_keys) && count ($ event-> cache_keys)) foreach ($ event-> cache_keys as $ cache_key) // génère un cache pour cette clé // warm_up_cache ($ cache_key)
Lorsque l’auditeur est appelé, le manipuler
La méthode est passée avec l'instance de l'événement associé. Dans notre cas, cela devrait être le cas du Vider le cache
événement qui sera passé comme premier argument à la manipuler
méthode.
Ensuite, il suffit de parcourir chaque clé de cache et de réchauffer les caches associés..
Maintenant, nous avons tout mis en place pour tester les choses. Créons rapidement un fichier de contrôleur à app / Http / Controllers / EventController.php
pour démontrer comment vous pouvez organiser un événement.
Tout d'abord, nous avons passé un tableau de clés de cache comme premier argument lors de la création d'une instance de
Vider le cache
un événement.La fonction d'assistance aux événements est utilisée pour déclencher un événement à partir de n'importe où dans une application. Lorsque l'événement est déclenché, Laravel appelle tous les auditeurs qui écoutent cet événement.
Dans notre cas, le
App \ Listeners \ WarmUpCache
auditeur est réglé pour écouter laApp \ Events \ ClearCache
un événement. Ainsi, lemanipuler
méthode duApp \ Listeners \ WarmUpCache
L’écouteur est appelé lorsque l’événement est déclenché par un contrôleur. Le reste consiste à réchauffer les caches qui ont été effacées!Vous pouvez ainsi créer des événements personnalisés dans votre application et les utiliser..
Qu'est-ce qu'un abonné à un événement??
L'abonné aux événements vous permet de souscrire plusieurs écouteurs d'événements en un seul endroit. Que vous souhaitiez grouper logiquement des écouteurs d'événement ou que vous vouliez contenir des événements en croissance dans un seul endroit, c'est l'abonné d'événement que vous recherchez..
Si nous avions implémenté les exemples discutés jusqu'à présent dans cet article en utilisant l'abonné d'événement, cela pourrait ressembler à ceci.
utilisateur-> email; $ username = $ event-> user-> name; // envoie une notification par courrier électronique à propos de la connexion… / ** * Gestion des événements de déconnexion utilisateur. * / fonction publique warmUpCache ($ event) if (isset ($ event-> cache_keys) && count ($ event-> cache_keys)) foreach ($ event-> cache_keys as $ cache_key) // génère un cache pour cette clé // warm_up_cache ($ cache_key) / ** * Enregistrez les écouteurs pour l'abonné. * * @param Illuminate \ Events \ Dispatcher $ events * / fonction publique subscribe ($ events) $ events-> listen ('Illuminate \ Auth \ Events \ Login', 'App \ Listeners \ ExampleEventSubscriber @ sendEmailNotification'); $ events-> listen ('App \ Events \ ClearCache', 'App \ Listeners \ ExampleEventSubscriber @ warmUpCache');C'est le
souscrire
méthode qui est responsable de l'enregistrement des auditeurs. Le premier argument de lasouscrire
méthode est l'instance de laIlluminer \ Événements \ Répartiteur
classe que vous pouvez utiliser pour lier des événements à des auditeurs à l'aide duécoute
méthode.Le premier argument de la
écoute
méthode est un événement que vous souhaitez écouter, et le deuxième argument est un écouteur qui sera appelé lorsque l'événement sera déclenché.De cette manière, vous pouvez définir plusieurs événements et écouteurs dans la classe d’abonné elle-même..
La classe d'abonné aux événements ne sera pas prise automatiquement. Vous devez l'enregistrer dans le
EventServiceProvider.php
classe sous la$ abonné
propriété, comme indiqué dans l'extrait suivant.C’était donc la classe d’abonnés aux événements à votre disposition, et nous avons également atteint la fin de cet article..
Conclusion
Nous avons discuté aujourd’hui de quelques-unes des caractéristiques intéressantes des événements et des auditeurs de Laravel. Ils sont basés sur le modèle de conception de l'observateur qui vous permet de créer des événements à l'échelle de l'application et aux autres modules de les écouter et de réagir en conséquence..
Vous souhaitez simplement vous familiariser avec Laravel ou chercher à étendre vos connaissances, votre site ou votre application avec des extensions? Nous avons une variété de choses que vous pouvez étudier sur le marché Envato.
!