Créer des événements et des auditeurs: utilisez la commande Artisan pour générer des événements conformés par l'utilisateur et les écouteurs SendWelcomeMail et LogUserRegistration; 2. Définir les classes d'événements: injecter des instances utilisateur dans le constructeur conforme à l'utilisateur pour les écouteurs à accéder; 3. écrivez la logique de l'écoute: SendWelcomeMail envoie des e-mails bienvenus et les enregistrements de loguser d'enregistrement des journaux d'enregistrement des utilisateurs; 4. Enregistrer les événements et les auditeurs: Bind Events and Audivers in the $ écouter la table d'écoute de EventServiceProvider; 5. Distribuez les événements: une fois l'utilisateur enregistré, l'événement conforme de l'utilisateur est déclenché via Event () ou Event :: Dispatch () pour faire en sorte que l'écouteur s'exécute automatiquement; 6. Découverte de l'événement automatique Activer Activer: Définir les Discovevents pour retourner True et exécuter la commande Event: Cache pour enregistrer automatiquement l'auditeur; 7. Meilleures pratiques: gardez la responsabilité unique de l'auditeur et les taches qui prennent du temps utilisent l'interface SouftQueue pour implémenter le traitement des files d'attente pour éviter d'écrire une logique complexe dans les événements. Ce mode améliore la maintenabilité et l'évolutivité des applications en découplant la logique commerciale et convient à la notification, à l'exploitation forestière, à l'analyse et à d'autres scénarios.
Les événements et les auditeurs de Laravel sont un moyen puissant de rendre votre application plus modulaire et maintenue en découplant les actions du code qui les déclenche. Au lieu d'écrire une logique longue et étroitement couplée dans vos contr?leurs ou modèles, vous pouvez envoyer des événements et laisser les auditeurs y réagir. Ce tutoriel vous guide à travers la configuration et l'utilisation d'événements et d'auditeurs à Laravel avec un exemple pratique.

Que sont les événements et les auditeurs?
- événement : quelque chose qui s'est produit dans votre application (par exemple, un utilisateur enregistré).
- écouteur : une classe qui réagit à cet événement (par exemple, envoyez un e-mail de bienvenue, activité de journal).
Ce modèle suit le modèle de l'observateur , permettant à une partie de votre application d'en informer les autres sans savoir qui écoute.
étape 1: Générez un événement et un auditeur
Laravel facilite la création d'événements et d'auditeurs à l'aide de commandes d'artisan.

Disons que nous voulons envoyer un e-mail de bienvenue et enregistrer l'inscription des utilisateurs.
Créer l'événement
PHP Artisan Mak
Cela crée un fichier: app/Events/UserRegistered.php

Créer l'auditeur
PHP Artisan Mak PHP Artisan MADE: LOVIEUR LOGUSERRESTIONS --EVENT = USERREGISTRé
Cela crée:
-
app/Listeners/SendWelcomeEmail.php
-
app/Listeners/LogUserRegistration.php
Vous pouvez également créer des auditeurs sans spécifier l'événement et les cabler manuellement plus tard.
étape 2: Définissez la classe d'événements
Ouvrir app/Events/UserRegistered.php
. Cela devrait ressembler à ceci:
<? Php Namespace App \ Events; Utilisez App \ Models \ User; Utiliser illuminate \ Broadcasting \ Channel; Utiliser illuminate \ Broadcasting \ InteractWithSockets; Utiliser illuminate \ Broadcasting \ PresencECHANnel; Utiliser illuminate \ Broadcasting \ privateChannel; Utiliser illuminate \ contracts \ Broadcasting \ aitbroadcast; Utiliser illuminate \ Foundation \ Events \ Dispatchable; Utiliser illuminate \ queue \ serializesModels; classe conforme à l'utilisateur { Utiliser la répartition, interactive avec des billets, serializesModels; public $ utilisateur; fonction publique __construct (utilisateur de l'utilisateur) { $ this-> user = $ utilisateur; } fonction publique Broadcaston () { retourner new privatechannel (?canal-name?); } }
Nous passons le modèle $user
à l'événement afin que les auditeurs puissent y accéder.
étape 3: écrivez la logique de l'auditeur
Ouvrez app/Listeners/SendWelcomeEmail.php
:
<? Php Namespace App \ auditeurs; Utilisez App \ Events \ Userregistered; Utiliser illuminate \ support \ FACADES \ Mail; Utilisez App \ Mail \ WelvelEmail; Classe SendwelcomeMail { Poignée de la fonction publique (événement $ enregistré par l'utilisateur) { Mail :: to ($ event-> user-> e-mail) -> envoyer (new WelcomeEmail ($ event-> utilisateur)); } }
Assurez-vous que vous avez un WelcomeEmail
Mailable:
PHP Artisan Make: Mail WeldenEmail
De même, pour l'exploitation forestière:
<? Php Namespace App \ auditeurs; Utilisez App \ Events \ Userregistered; Utiliser illuminate \ support \ FACADES \ Log; Enregistrement de la classe { Poignée de la fonction publique (événement $ enregistré par l'utilisateur) { Journal :: info ('nouvel utilisateur enregistré:'. $ Event-> utilisateur-> e-mail); } }
étape 4: Enregistrez l'événement et les auditeurs
app/Providers/EventServiceProvider.php
.
Dans le tableau $listen
, mappez l'événement à ses auditeurs:
protégé $ écouter = [ 'App \ events \ userregistered' => [ 'App \ auditeurs \ sendWelcomeMail', ?App \ auditeurs \ loguser d'enregistrement?, ], ]]
Cela indique à Laravel quels auditeurs devraient s'exécuter lors de l' UserRegistered
.
Après avoir apporté des modifications ici, courez:
PHP Artisan Event: Cache
(pour la production; non requis dans le développement local)
étape 5: Envoyez l'événement
Maintenant, déclenchez l'événement à partir de votre contr?leur ou modèle.
Dans votre RegisterController
ou partout où l'inscription des utilisateurs se produit:
Utilisez App \ Events \ Userregistered; Utiliser illuminate \ support \ FACADES \ Event; // après la création de l'utilisateur événement (nouvel utilisateur Inscrit ($ user)); // ou utiliser la fa?ade de l'événement Event :: Dispatch (New UserRegistered ($ user));
Exemple dans une méthode de contr?leur:
Registre des fonctions publiques (demande $ demande) { $ user = user :: create ($ request-> valided ()); événement (nouvel utilisateur Inscrit ($ user)); return redirect ('/ dashboard'); }
Lorsque cela s'exécute, les deux auditeurs s'exécuteront.
Facultatif: découverte d'événements
Si vous ne souhaitez pas enregistrer manuellement des événements dans EventServiceProvider
, Laravel peut les découverter automatiquement.
Activez-le dans EventServiceProvider
:
La fonction publique devrait-on recouverte () { Retour Vrai; }
Laravel scannera les paires de répertoire Listeners
et d'auto-inscripteur-référencement en fonction de la méthode handle()
.
Ensuite, vous n'avez pas besoin de les énumérer dans $listen
.
Courir:
PHP Artisan Event: Cache
Meilleures pratiques
- Gardez les auditeurs concentrés: un travail par auditeur.
- Utilisez des auditeurs de filets pour des taches lentes (comme l'envoi de courriels):
Classe SendwelcomeMail implémente SouftQueue { Utilisez la queregue; }
Assurez-vous que votre auditeur utilise le trait Queueable
et met en ?uvre ShouldQueue
.
- évitez la logique lourde dans les événements; Utilisez-les juste pour signaler.
Résumé
Les événements et les auditeurs vous aident à rédiger des applications Laravel plus propres et plus évolutives en séparant les préoccupations. Vous avez maintenant:
- Créé un événement (
UserRegistered
) - Fait des auditeurs (
SendWelcomeEmail
,LogUserRegistration
) - Les enregistrés dans
EventServiceProvider
- Jeté l'événement de votre code
Ce modèle est idéal pour la journalisation d'audit, les notifications, l'analyse, etc.
Fondamentalement, si quelque chose se passe et que d'autres parties de votre application doivent savoir - utiliser des événements.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Outils d'IA chauds

Undress AI Tool
Images de déshabillage gratuites

Undresser.AI Undress
Application basée sur l'IA pour créer des photos de nu réalistes

AI Clothes Remover
Outil d'IA en ligne pour supprimer les vêtements des photos.

Clothoff.io
Dissolvant de vêtements AI

Video Face Swap
échangez les visages dans n'importe quelle vidéo sans effort grace à notre outil d'échange de visage AI entièrement gratuit?!

Article chaud

Outils chauds

Bloc-notes++7.3.1
éditeur de code facile à utiliser et gratuit

SublimeText3 version chinoise
Version chinoise, très simple à utiliser

Envoyer Studio 13.0.1
Puissant environnement de développement intégré PHP

Dreamweaver CS6
Outils de développement Web visuel

SublimeText3 version Mac
Logiciel d'édition de code au niveau de Dieu (SublimeText3)

Sujets chauds

PhpisstillRelevantinmodernerterpriseenvironments.1.modernPhp (7.xand8.x) offre des performances, des stricts, un jitcompilation, et modernsyntax, rendant la main

Pour construire un microservice PHP flexible, vous devez utiliser RabbitMQ pour obtenir une communication asynchrone, 1. Découplez le service via des files d'attente de messages pour éviter les défaillances en cascade; 2. Configurer des files d'attente persistantes, des messages persistants, une confirmation de libération et un ACK manuel pour assurer la fiabilité; 3. Utilisez des échecs de traitement de la sécurité de la file d'attente de la file d'attente de la file d'attente de la file d'attente de la file d'attente de la file d'attente de la file d'attente de la file d'attente de la file d'attente; 4. Utilisez des outils tels que SuperVisord pour protéger les processus de consommation et permettre des mécanismes de battements cardiaques pour assurer la santé des services; et finalement réaliser la capacité du système à opérer en continu en échecs.

L'utilisation de l'image de base PHP correcte et la configuration d'un environnement Docker sécurisé et optimisé sont la clé pour obtenir la production prête. 1. Sélectionnez PHP: 8.3-FPM-Alpine comme image de base pour réduire la surface d'attaque et améliorer les performances; 2. Désactiver les fonctions dangereuses via PHP.ini personnalisé, désactiver l'affichage des erreurs et activer Opcache et Jit pour améliorer la sécurité et les performances; 3. Utilisez Nginx comme proxy inverse pour restreindre l'accès aux fichiers sensibles et transférer correctement les demandes PHP à PHP-FPM; 4. Utilisez des images d'optimisation en plusieurs étapes pour supprimer les dépendances de développement et configurez les utilisateurs non racinaires pour exécuter des conteneurs; 5. Supervisord facultatif pour gérer plusieurs processus tels que Cron; 6. Vérifiez qu'aucune fuite d'informations sensibles avant le déploiement

évitez N 1 Problèmes de requête, réduisez le nombre de requêtes de base de données en chargeant à l'avance des données associées; 2. Sélectionnez uniquement les champs requis pour éviter de charger des entités complètes pour enregistrer la mémoire et la bande passante; 3. Utilisez raisonnablement les stratégies de cache, telles que le cache secondaire de la doctrine ou les résultats de requête à haute fréquence de cache de Doctrine; 4. Optimisez le cycle de vie de l'entité et appelez régulièrement () pour libérer la mémoire pour empêcher le débordement de la mémoire; 5. Assurez-vous que l'indice de base de données existe et analysez les instructions SQL générées pour éviter les requêtes inefficaces; 6. Désactiver le suivi automatique des changements dans les scénarios où les modifications ne sont pas nécessaires et utilisez des tableaux ou des modes légers pour améliorer les performances. L'utilisation correcte de l'ORM nécessite de combiner la surveillance SQL, la mise en cache, le traitement par lots et l'optimisation appropriée pour garantir les performances de l'application tout en maintenant l'efficacité du développement.

ReadonlypropertiesInphp8.2CanlybeassignedonceinthestrustructoratDeclarationandcannotBemodifiedAfterward, applicationmutabilityaThelanguageLevel.2.Toachievedeep-immutability, webutableTypeSlikEarrayinArrayobjectorUSustomymutability, webutilletypeslikearraysinarrayobjectoruseseCustomMutabeColEctionSucha.

BREF permet aux développeurs PHP de créer des applications évolutives et rentables sans gérer les serveurs. 1.BREF apporte PHP à Awslambda en fournissant une couche d'exécution PHP optimisée, prend en charge PHP8.3 et d'autres versions, et s'intègre de manière transparente à des frameworks tels que Laravel et Symfony; 2. Les étapes de déploiement incluent: l'installation de BREF à l'aide de composer, configurer Serverless.yml pour définir des fonctions et des événements, tels que les points de terminaison HTTP et les commandes artisanales; 3. Exécutez la commande ServerlessDeploy pour terminer le déploiement, configurez automatiquement Apigeway et générez des URL d'accès; 4. Pour les restrictions de lambda, BREF fournit des solutions.

UseArestapitobridgePhpandmlModelsByrunningTheModelinpythonviaflaskorfastapiandCallingitfrompsingCurlorBuzzle.2.Runpythonscripts est ventilateur

Il est recommandé d'utiliser le mot-clé dans pour vérifier si une clé existe dans le dictionnaire, car elle est concise, efficace et très lisible; 2. Il n'est pas recommandé d'utiliser la méthode get () pour déterminer si la clé existe, car elle sera mal jugée lorsque la clé existe mais que la valeur n'est aucune; 3. Vous pouvez utiliser la méthode Keys (), mais elle est redondante, car par défaut pour vérifier la clé; 4. Lorsque vous devez obtenir une valeur et que la clé attendue existe généralement, vous pouvez utiliser Try-Except pour attraper l'exception de Keyerror. La méthode la plus recommandée consiste à utiliser le mot clé dans, qui est à la fois s?r et efficace, et n'est pas affecté par la valeur de aucun, ce qui convient à la plupart des scénarios.
