Stellen Sie sich vor, dass jedes Mal, wenn Sie ein Formular auf einer Website einreichen, ein unsichtbarer Assistent hereinkommt und alles noch einmal überprüft. Fügen Sie zusätzliche Details hinzu oder senden Sie sogar einen Willkommensbrief, ohne dass Sie einen Finger rühren müssen. Laravel-Beobachter sind wie Assistenten hinter den Kulissen, die im Stillen arbeiten. Und es ist leistungsstark, um alle Aufgaben dann zu erledigen, wenn Sie sie brauchen. In diesem Beitrag gehen wir näher darauf ein, wie Beobachter in Laravel arbeiten und warum sie die stillen Ninjas Ihrer App bei der Verarbeitung von Modellereignissen sind. und wie man anhand realer Beispiele das Beste aus diesen Ereignissen herausholt.
Laravel Observers sind Listener-Klassen, die Ihnen helfen, den Lebenszyklus Ihres Modells zu verwalten, indem sie bestimmte Ereignisse beobachten, wie z. B. das Erstellen, Aktualisieren oder Löschen. Beobachter können für jedes dieser Ereignisse Aktionen definieren. Halten Sie Ihre Controller und Modelle sauber und fokussiert. Die Beobachter fungieren als „Ereignisexperten“ innerhalb Ihrer Anwendung. Beobachter kümmern sich um die Backend-Arbeit, die zur Verbesserung Ihrer Codebasis erforderlich ist. und verbessern Sie Organisation und Effizienz durch ereignisgesteuerte Arbeitstrennung. Beobachter tragen zu einer modulareren und wartbareren Anwendungsstruktur bei.
1. Sauberere Controller und Modelle: Beobachter kümmern sich um wiederholte Aktionen, sodass sich Ihre Controller und Modelle ohne Ablenkung auf ihre Hauptaufgaben konzentrieren können.
2. Wiederverwendbarkeit des Codes: Sie können verwandte Aktionen an einem Ort konsolidieren und so Ihren Code besser lesbar und wartbar machen.
3. Fehlerbehandlung: Beobachter helfen Ihnen, Fehler zu vermeiden, indem sie Aufgaben wie Datenvalidierung oder Hintergrundaktualisierungen automatisieren, wenn sich ein Modell ändert.
4. Automatische Ereignisbehandlung: Möchten Sie jedes Mal eine Aktion auslösen, wenn ein Datensatz erstellt oder aktualisiert wird? Beobachter stehen hinter Ihnen.
Kurz gesagt: Observer eignen sich hervorragend zum Organisieren der Logik, die Sie in den verschiedenen Phasen des Lebenszyklus Ihrer App ausführen möchten.
- Abgerufen: Wird ausgelöst, nachdem ein Datensatz aus der Datenbank abgerufen wurde.
- Erstellen: Wird ausgelöst, kurz bevor ein neuer Datensatz erstellt wird.
- Erstellt: Wird ausgeführt, nachdem ein neuer Datensatz erfolgreich erstellt wurde.
- Aktualisierung: Wird aktiviert, bevor ein vorhandener Datensatz aktualisiert wird.
- Aktualisiert: Wird ausgelöst, nachdem ein Datensatz aktualisiert wurde.
- Speichern: Wird ausgeführt, bevor ein Datensatz gespeichert wird, unabhängig davon, ob es sich um eine neue Erstellung oder eine Aktualisierung handelt.
- Gespeichert: Tritt auf, nachdem ein Datensatz gespeichert wurde, unabhängig davon, ob er neu erstellt oder aktualisiert wurde.
- Löschen: Wird initiiert, bevor ein Datensatz gelöscht oder vorläufig gelöscht wird.
- Gelöscht: Wird aktiviert, nachdem ein Datensatz gelöscht oder vorläufig gelöscht wurde.
- Wiederherstellung: Wird ausgelöst, bevor ein vorläufig gelöschter Datensatz wiederhergestellt wird.
- Wiederhergestellt: Wird ausgeführt, nachdem ein vorläufig gelöschter Datensatz erfolgreich wiederhergestellt wurde.
Besprechen wir Beobachter anhand eines Beispiels aus der Praxis. Stellen Sie sich vor, wir erstellen eine Blogging-App und jedes Mal, wenn ein Benutzer einen Beitrag veröffentlicht, möchten wir:
So können wir dies mit Laravel Observers erreichen!
Schritt 1: Erstellen Sie die Observer-Klasse
Laravel macht es einfach, eine Beobachterklasse zu generieren. Führen Sie diesen Befehl aus:
php artisan make:observer PostObserver --model=Post
Dadurch wird eine PostObserver-Klasse im Verzeichnis app/Observers generiert und mit unserem Post-Modell verknüpft.
Schritt 2: Definieren Sie die Ereignisse im Observer
Öffnen Sie die PostObserver-Klasse und Sie werden einige praktische Methoden sehen, die bereits vorhanden sind. Jede Methode entspricht einem Modellereignis, z. B. Erstellen, Aktualisieren, Löschen und mehr.
Fügen wir unsere benutzerdefinierte Logik zum Erstellungsereignis hinzu, sodass ein Slug generiert und das Veröffentlichungsdatum aufgezeichnet wird:
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)); } }
Schritt 3: Registrieren Sie den Beobachter
Laravel bietet zwei Möglichkeiten, dies zu tun: das ObservedBy-Attribut im Modell oder manuell mithilfe der Beobachtungsmethode
1.Verwendung des ObservedBy-Attributs
Wenn Sie mit Laravel 10 arbeiten, können Sie das ObservedBy-Attribut direkt auf Ihrem Modell verwenden. Dieses Attribut vereinfacht die Observer-Registrierung, indem es den Observer automatisch mit dem Modell verknüpft:
use App\Observers\PostObserver; use Illuminate\Database\Eloquent\Concerns\ObservedBy; #[ObservedBy(PostObserver::class)] class Post extends Model { // Your Post model code }
Dieser Ansatz ist sauber und behält die Observer-Registrierung beim Modell selbst bei, wodurch die Einrichtungsschritte reduziert werden und Ihr AppServiceProvider unberührt bleibt.
2. Manuelles Registrieren des Beobachters
Wenn Sie es vorziehen (oder mit einer Laravel-Version vor 10 arbeiten), können Sie den Observer manuell in der Boot-Methode des AppServiceProviders registrieren:
Fügen Sie in Ihrer AppProvidersAppServiceProvider.php die Beobachtungsmethode hinzu, um den Observer mit dem Modell zu verknüpfen:
php artisan make:observer PostObserver --model=Post
Sobald Laravel registriert ist, löst es die Methoden Ihres Beobachters aus, wenn die entsprechenden Ereignisse im Post-Modell auftreten.
Schritt 4: Testen Sie Ihren Beobachter
Um Ihren Beobachter in Aktion zu sehen, versuchen Sie, einen Beitrag in Ihrer App zu erstellen oder zu aktualisieren. Der Slug wird automatisch generiert, das Veröffentlichungsdatum wird automatisch festgelegt und unser hypothetischer Administrator erhält eine Benachrichtigung. Beobachter sorgen dafür, dass das alles leise geschieht, genau wie ein echter Ninja.
Danke fürs Lesen! Ich hoffe, dass dies einige neue Ideen für Ihre Projekte hervorgebracht hat. Wenn Sie daran interessiert sind, qualitativ hochwertige Entwicklung zum Leben zu erwecken, können Sie sich gerne an uns wenden – ich würde mich gerne mit Ihnen vernetzen und herausfinden, wie wir dies verwirklichen können.
Das obige ist der detaillierte Inhalt vonLaravel Observers: Die stillen Ninjas Ihres Anwendungslebenszyklus. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!