Heim >Backend-Entwicklung >PHP-Tutorial >So verwenden Sie den Symfony Event Dispatcher für PHP
Dieses Tutorial zeigt die Symfony-Event-Dispatcher-Komponente und aktiviert die ereignisgesteuerte Architektur in PHP-Anwendungen. Dies fördert die lose Kopplung zwischen Anwendungskomponenten.
Verständnis des Symfony Event Dispatcher
Der Symfony -Event -Dispatcher spiegelt das Beobachtermuster wider und ermöglicht es den Zuhörern, auf Ereignisse zu reagieren. Es umfasst drei Schlüsselelemente: Ereignisse, Zuhörer und den Dispatcher selbst. Der Dispatcher löst Ereignisse aus und führt zugehörige Zuhörer aus.
Stellen Sie sich vor, Sie müssen andere Komponenten benachrichtigen, wenn der Cache gelöscht wird. Sie definieren ein Ereignis "Cache gelöscht". Nach dem Löschen des Cache erhöht der Dispatcher dieses Ereignis und löst alle registrierten Hörer aus, um komponentenspezifische Cache-Säuberungen auszuführen.
Dieses Tutorial deckt die Grundlagen ab, beginnend mit Installation und Konfiguration und praktische Beispiele.
Installation und Konfiguration
Angenommen, der Komponist ist installiert, verwenden Sie diesen Befehl:
composer require symfony/event-dispatcher
Dies generiert oder aktualisiert composer.json
, was ähneln sollte:
{ "require": { "symfony/event-dispatcher": "^5.4" } }
erhöhen Sie composer.json
mit autoloading:
{ "require": { "symfony/event-dispatcher": "^5.4" }, "autoload": { "psr-4": { "EventDispatchers\": "src" }, "classmap": ["src"] } }
Aktualisieren Sie den Autoloader:
composer dump -o
Jetzt ist die EventDispatcher -Klasse bereit für die Verwendung. Wir erstellen Ereignis- und Hörerklassen und verbinden sie dann.
Beispiel: basic_example.php
erstellen basic_example.php
:
<?php // basic_example.php require_once './vendor/autoload.php'; use Symfony\Component\EventDispatcher\EventDispatcher; use EventDispatchers\Events\DemoEvent; use EventDispatchers\Listeners\DemoListener; // Initialize event dispatcher $dispatcher = new EventDispatcher(); // Register listener for 'demo.event' $listener = new DemoListener(); $dispatcher->addListener('demo.event', [$listener, 'onDemoEvent']); // Dispatch the event $dispatcher->dispatch(new DemoEvent(), DemoEvent::NAME);
Die stopPropagation()
-Methode stoppt die Ereignisausbreitung. Die isPropagationStopped()
-Methodenüberprüfungen, wenn die Ausbreitung gestoppt wurde.
Verwenden Sie PHP -Verschluss als Hörer
Anstelle von Objekten können PHP -Schließungen als Zuhörer dienen:
<?php require_once './vendor/autoload.php'; use Symfony\Component\EventDispatcher\EventDispatcher; use EventDispatchers\Events\DemoEvent; // Initialize event dispatcher $dispatcher = new EventDispatcher(); // Register closure listener for 'demo.event' $dispatcher->addListener('demo.event', function (DemoEvent $event) { echo "DemoListener is called!\n"; echo "The value of the foo is: " . $event->getFoo() . "\n"; }); // Dispatch the event $dispatcher->dispatch(new DemoEvent(), 'demo.event');
Die Methode addListener
verwendet nun einen Verschluss als zweites Argument.
Schlussfolgerung
Der Symfony-Event-Dispatcher ermöglicht die ereignisorientierte Programmierung in PHP und erstellt locker gekoppelte, leicht zu wartenwerte Anwendungen. Auf diese Weise können Komponenten ohne direkte Abhängigkeiten effektiv kommunizieren.
Das obige ist der detaillierte Inhalt vonSo verwenden Sie den Symfony Event Dispatcher für PHP. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!