SchöpfungsSchnipsel

Tutorial: Laravel Events erstellen und auslösen


Tutorial: Laravel Events erstellen und auslösen, In Laravel sind Events eine elegante Möglichkeit, verschiedene Aktionen innerhalb Ihrer Anwendung auszulösen, ohne den Code zu verkomplizieren oder zu verknüpfen. Events ermöglichen es Ihnen, sauber und organisiert zu bleiben, indem Sie bestimmte Aufgaben an Event-Listener delegieren, die bei Bedarf ausgeführt werden. Sie eignen sich besonders gut für die Trennung von Logik, die auf bestimmte Änderungen oder Aktionen reagiert – z.B. das Senden einer E-Mail, wenn ein neuer Benutzer registriert wird, oder das Protokollieren von Änderungen in einer Datenbank. In diesem Tutorial werden wir Schritt für Schritt durchgehen, wie Sie Events in Laravel erstellen, registrieren und auslösen können. Lassen Sie uns direkt einsteigen!

1. Was sind Laravel Events und warum sollten Sie sie verwenden?


Laravel Events bieten eine leistungsstarke Möglichkeit, lose gekoppelte Komponenten in Ihrer Anwendung zu implementieren. Mit Events können Sie:

Aktionen basierend auf bestimmten Ereignissen auslösen: Zum Beispiel beim Erstellen eines neuen Benutzers, beim Hochladen einer Datei oder bei einer erfolgreichen Zahlung.

Code sauber und modular halten: Sie trennen die Verantwortlichkeiten, indem Sie die Logik in Events und Listener auslagern.

Wiederverwendbare und erweiterbare Lösungen erstellen: Ein Event kann mehrere Listener haben, und Listener können auf verschiedene Events hören.

2. Einrichten eines neuen Events und eines Listeners in Laravel


In Laravel können Sie Events und Listener auf einfache Weise mit Artisan-Befehlen generieren. Beginnen wir damit, ein neues Event und einen zugehörigen Listener zu erstellen.

Schritt 1: Erstellen eines neuen Events


Laravel bietet einen praktischen Artisan-Befehl, um ein neues Event zu erstellen. Lassen Sie uns ein Event namens UserRegistered erstellen, das ausgelöst wird, wenn sich ein neuer Benutzer registriert:

php artisan make:event UserRegistered

Dieser Befehl erstellt eine neue Datei im Verzeichnis app/Events:

// app/Events/UserRegistered.php namespace App\Events; use Illuminate\Foundation\Events\Dispatchable; use Illuminate\Queue\SerializesModels; class UserRegistered { use Dispatchable, SerializesModels; public $user; public function __construct($user) { $this->user = $user; } }

INFO:In diesem Event haben wir eine öffentliche Eigenschaft $user hinzugefügt, um die Benutzerdaten zu speichern, wenn das Event ausgelöst wird.

Schritt 2: Erstellen eines neuen Listeners


Ein Listener führt die Aktion aus, wenn das Event ausgelöst wird. Lassen Sie uns einen Listener erstellen, der z.B. eine E-Mail sendet, wenn sich ein Benutzer registriert:

php artisan make:listener SendWelcomeEmail --event=UserRegistered

Dieser Befehl erstellt eine neue Datei im Verzeichnis app/Listeners:

// app/Listeners/SendWelcomeEmail.php namespace App\Listeners; use App\Events\UserRegistered; use Illuminate\Contracts\Queue\ShouldQueue; use Illuminate\Queue\InteractsWithQueue; use Mail; class SendWelcomeEmail { public function __construct() { // } public function handle(UserRegistered $event) { // Hier senden wir eine Willkommens-E-Mail Mail::to($event->user->email)->send(new \App\Mail\WelcomeMail($event->user)); } }

Der handle-Methodenteil des Listeners führt die Aktion aus, die Sie möchten – in diesem Fall wird eine Willkommens-E-Mail an den neuen Benutzer gesendet.

Schritt 3: Registrieren Sie das Event und den Listener


Nachdem wir unser Event und den Listener erstellt haben, müssen wir sie in EventServiceProvider registrieren. Öffnen Sie die Datei app/Providers/EventServiceProvider.php und fügen Sie das Event und den Listener zum $listen-Array hinzu:

// app/Providers/EventServiceProvider.php namespace App\Providers; use Illuminate\Foundation\Support\Providers\EventServiceProvider as ServiceProvider; use Illuminate\Support\Facades\Event; class EventServiceProvider extends ServiceProvider { protected $listen = [ 'App\Events\UserRegistered' => [ 'App\Listeners\SendWelcomeEmail', ], ]; }

Das war's! Jetzt weiß Laravel, dass, wenn das UserRegistered-Event ausgelöst wird, es den SendWelcomeEmail-Listener ausführen soll.

3. Auslösen des Events


Nachdem Sie das Event und den Listener eingerichtet haben, müssen wir noch das Event auslösen, um den Workflow zu testen. Das Auslösen eines Events in Laravel ist super einfach – Sie müssen nur die event()-Funktion verwenden oder die dispatch()-Methode direkt aufrufen.

Schritt 4: Event auslösen


Nehmen wir an, Sie möchten das UserRegistered-Event direkt nach der Registrierung eines neuen Benutzers in Ihrem RegisterController auslösen:

// app/Http/Controllers/Auth/RegisterController.php namespace App\Http\Controllers\Auth; use App\Http\Controllers\Controller; use App\Providers\RouteServiceProvider; use App\Models\User; use App\Events\UserRegistered; // Importieren Sie das Event class RegisterController extends Controller { protected function create(array $data) { $user = User::create([ 'name' => $data['name'], 'email' => $data['email'], 'password' => bcrypt($data['password']), ]); // Event auslösen event(new UserRegistered($user)); return $user; } }

Sobald der Benutzer erstellt wird, wird das UserRegistered-Event ausgelöst, und der SendWelcomeEmail-Listener wird ausgeführt, um die E-Mail zu senden.

4. Tipps und Tricks zur Arbeit mit Laravel Events


Asynchrone Verarbeitung mit Warteschlangen: Wenn Ihr Listener zeitaufwändige Aufgaben wie das Senden von E-Mails oder das Verarbeiten von Bildern ausführt, sollten Sie ihn in eine Warteschlange stellen, um die Reaktionszeit Ihrer Anwendung zu verbessern. Lassen Sie den Listener einfach die ShouldQueue-Schnittstelle implementieren:

use Illuminate\Contracts\Queue\ShouldQueue; class SendWelcomeEmail implements ShouldQueue { // Listener-Code... }

Mehrere Listener für ein Event: Sie können mehrere Listener für ein einziges Event haben. Dies ist nützlich, wenn verschiedene Aktionen als Reaktion auf dasselbe Event ausgeführt werden sollen, z.B. das Senden einer E-Mail und das Erstellen eines Log-Eintrags.


Tipp:Event Discovery: Laravel bietet eine automatische Erkennung von Events und Listeners, sodass Sie sie nicht manuell in der EventServiceProvider-Klasse registrieren müssen. Aktivieren Sie einfach auto-discover in Ihrer composer.json:

"extra": { "laravel": { "dont-discover": [] } }

Events sind ein hervorragendes Werkzeug, um komplexe Logik sauber und modular zu halten. Mit Laravel's benutzerfreundlicher API und flexibler Architektur können Sie mühelos Ereignisse erstellen und auslösen, um Ihre Anwendung robuster und wartbarer zu gestalten.

Indem Sie die Power von Events nutzen, können Sie Ihre Anwendung besser strukturieren, effizienter machen und den Code organisierter halten. Also, warum nicht heute damit beginnen, die Kraft der Events in Laravel zu nutzen und Ihrer Anwendung eine neue Ebene von Flexibilität und Kontrolle hinzuzufügen?

0 Kommentare

Bitte Loge dich ein um ein Kommentar zu Hinterlassen!

oder Login mit Google

StoryStube

Entdecken Sie spannende Neuigkeiten, praktische Tipps und hilfreiche Tricks rund um die neuesten Trends in meiner Branche. Bleiben Sie auf dem Laufenden mit meinen Beiträgen und innovativen Ideen...

Mehr Web-Leistung?
Jetzt unverbindlich anfragen!

Bereit für Neues?

Maßgeschneiderte Webentwicklung für ein einzigartiges Nutzererlebnis

Programmieren mit Präzision

Einzigartige und Professionelle

  • Kreative Gestaltung von Website-Layouts.
  • Digitalisierung auf höchstem Niveau.
  • Kreative Lösungen, starke Webseiten.
  • Anwendung für eine schnelle und reibungslose Benutzererfahrung.

Kontakt

Kontaktieren Sie mich noch heute, um umfassende Informationen zu meinen Dienstleistungen zu erhalten und zu erfahren, wie ich Sie wirkungsvoll bei der Umsetzung Ihres Webprojekts unterstützen kann.

Captcha
Entdecken Sie die Leistungsfähigkeit von Laravel für individuelle Webentwicklung! - Maßgeschneiderte Webentwicklung für ein einzigartiges Nutzererlebnis!

Live-Programmierungssitzung buchen, Echtzeit-Programmierhilfe reservieren, Sofortige Hilfe bei der Programmierung anfordern, Live-Unterstützung für Programmierprojekte buchen, Personalisierte Programmierberatung buchen, Online-Programmier-Coaching vereinbaren, Virtuelle Programmierhilfe in Echtzeit erhalten, Direkte Programmierungshilfe online buchen, Interaktive Programmierunterstützung reservieren, Programmierexperten live konsultieren, Sofortige Hilfe von Entwicklern einholen, Echtzeit-Entwicklungsunterstützung anfordern, Persönliche Programmierungssitzung buchen, On-Demand-Programmierungshilfe buchen, Live-Entwicklerberatung in Anspruch nehmen, Programmierprobleme live besprechen, Maßgeschneiderte Programmierunterstützung vereinbaren, Online-Session mit Programmierexperten planen, Interaktive Lösungen für Programmieraufgaben reservieren, Live-Programmierhilfe sofort verfügbar machen,