Imaginez que chaque fois que vous soumettez un formulaire sur un site Web, un assistant invisible entre et vérifie à nouveau tout. Ajoutez des détails supplémentaires ou même envoyez une lettre de bienvenue sans avoir à lever le petit doigt. Les observateurs de Laravel sont comme des assistants en coulisses qui travaillent tranquillement. Et il est puissant pour gérer toutes les tâches lorsque vous en avez besoin. Dans cet article, nous verrons comment les observateurs fonctionnent dans Laravel et pourquoi ils sont les ninjas silencieux de votre application dans la gestion des événements de modèle. et comment tirer le meilleur parti de ces événements dans des exemples concrets.
Les Laravel Observers sont des classes d'écoute qui aident à gérer le cycle de vie de votre modèle en observant des événements spécifiques, tels que la création, la mise à jour ou la suppression. Les observateurs peuvent définir des actions pour chacun de ces événements. Gardez vos contrôleurs et modèles propres et concentrés. Les observateurs agissent en tant qu'"experts en événements" au sein de votre application. Les observateurs se chargeront du travail backend requis pour améliorer votre base de code. et améliorer l'organisation et l'efficacité grâce à une séparation du travail basée sur des événements. Les observateurs contribuent à une structure d'application plus modulaire et maintenable.
1. Contrôleurs et modèles plus propres : Les observateurs gèrent des actions répétées, permettant à vos contrôleurs et modèles de se concentrer sur leurs tâches principales sans distraction.
2. Réutilisabilité du code : Vous pouvez consolider les actions associées en un seul endroit, rendant votre code plus lisible et maintenable.
3. Gestion des erreurs : Les observateurs vous aident à éviter les erreurs en automatisant des tâches telles que la validation des données ou les mises à jour en arrière-plan chaque fois qu'un modèle change.
4. Gestion automatique des événements : Vous souhaitez déclencher une action à chaque fois qu'un enregistrement est créé ou mis à jour ? Les observateurs vous soutiennent.
En bref, les Observers sont fantastiques pour organiser la logique que vous souhaitez exécuter au cours des différentes étapes du cycle de vie de votre application.
- Récupéré : Déclenché après la récupération d'un enregistrement de la base de données.
- Création : Se déclenche juste avant la création d'un nouvel enregistrement.
- Créé : S'exécute après la création réussie d'un nouvel enregistrement.
- Mise à jour : S'active avant la mise à jour d'un enregistrement existant.
- Mise à jour : Se déclenche après la mise à jour d'un enregistrement.
- Sauvegarde : S'exécute avant la sauvegarde d'un enregistrement, qu'il s'agisse d'une nouvelle création ou d'une mise à jour.
- Enregistré : Se produit après l'enregistrement d'un enregistrement, qu'il soit nouvellement créé ou mis à jour.
- Suppression : S'initie avant qu'un enregistrement ne soit supprimé ou supprimé de manière logicielle.
- Supprimé : S'active après la suppression ou la suppression logicielle d'un enregistrement.
- Restauration : Se déclenche avant la restauration d'un enregistrement supprimé de manière logicielle.
- Restauré : S'exécute après la restauration réussie d'un enregistrement supprimé de manière réversible.
Parlons des Observateurs avec un exemple concret. Imaginez que nous construisons une application de blog, et chaque fois qu'un utilisateur publie un article, nous voulons :
Voici comment y parvenir avec Laravel Observers !
Étape 1 : Créer la classe Observateur
Laravel facilite la génération d'une classe d'observateur. Exécutez cette commande :
php artisan make:observer PostObserver --model=Post
Cela générera une classe PostObserver dans le répertoire app/Observers et la reliera à notre modèle Post.
Étape 2 : Définir les événements dans l'observateur
Ouvrez la classe PostObserver et vous verrez quelques méthodes pratiques déjà en place. Chaque méthode correspond à un événement modèle, comme la création, la mise à jour, la suppression, etc.
Ajoutons notre logique personnalisée à l'événement de création afin qu'il génère un slug et enregistre la date de publication :
use Illuminate\Support\Str; class PostObserver { public function creating(Post $post) { $post->slug = Str::slug($post->title); $post->published_at = now(); } public function created(Post $post) { Notification::send(User::admin(), new PostPublishedNotification($post)); } }
Étape 3 : Enregistrez l'observateur
Laravel propose deux manières de procéder : l'attribut ObservedBy sur le modèle ou manuellement en utilisant la méthode observer
1.Utilisation de l'attribut ObservedBy
Si vous travaillez avec Laravel 10, vous pouvez utiliser l'attribut ObservedBy directement sur votre modèle. Cet attribut simplifie l'enregistrement de l'Observateur en liant automatiquement l'Observateur au modèle :
use App\Observers\PostObserver; use Illuminate\Database\Eloquent\Concerns\ObservedBy; #[ObservedBy(PostObserver::class)] class Post extends Model { // Your Post model code }
Cette approche est propre et conserve l'enregistrement Observer avec le modèle lui-même, réduisant ainsi les étapes de configuration et gardant votre AppServiceProvider intact.
2.Enregistrement manuel de l'observateur
Si vous préférez (ou travaillez dans une version de Laravel antérieure à 10), vous pouvez enregistrer manuellement l'Observer dans la méthode de démarrage d'AppServiceProvider :
Dans votre AppProvidersAppServiceProvider.php, ajoutez la méthode observer pour lier l'Observer au modèle :
php artisan make:observer PostObserver --model=Post
Une fois enregistré, Laravel déclenchera les méthodes de votre Observer chaque fois que les événements correspondants se produiront sur le modèle Post.
Étape 4 : tester votre observateur
Pour voir votre observateur en action, essayez de créer ou de mettre à jour une publication dans votre application. Le slug sera généré automatiquement, la date de publication se fixera d'elle-même et notre administrateur hypothétique recevra une notification. Les observateurs font que tout cela se passe tranquillement, tout comme un vrai ninja.
Merci d'avoir lu ! J'espère que cela a suscité de nouvelles idées pour vos projets. Si vous souhaitez donner vie au développement de la qualité, n'hésitez pas à nous contacter : j'aimerais me connecter et explorer comment nous pouvons y parvenir.
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!