Maison >développement back-end >tutoriel php >Comment utiliser le répartiteur d'événements Symfony pour PHP
Ce didacticiel démontre le composant Symfony Event Dispatcher, permettant une architecture axée sur les événements dans les applications PHP. Cela favorise un couplage lâche entre les composants d'application.
Comprendre le répartiteur d'événements Symfony
Le répartiteur d'événements Symfony reflète le modèle d'observateur, permettant aux auditeurs de réagir aux événements. Il comprend trois éléments clés: les événements, les auditeurs et le répartiteur lui-même. Le répartiteur déclenche les événements et exécute les auditeurs associés.
Imaginez avoir besoin de notifier d'autres composants lorsque le cache est effacé. Vous définissez un événement "Cache effacé". Après avoir effacé le cache, le répartiteur augmente cet événement, déclenchant tous les auditeurs enregistrés pour effectuer des purges de cache spécifiques aux composants.
Ce tutoriel couvre les bases, en commençant par l'installation et la configuration, et en fournissant des exemples pratiques.
Installation et configuration
En supposant que le compositeur est installé, utilisez cette commande:
composer require symfony/event-dispatcher
Cela génère ou met à jour composer.json
, qui devrait ressembler:
{ "require": { "symfony/event-dispatcher": "^5.4" } }
Améliorer composer.json
avec la mise en scène:
{ "require": { "symfony/event-dispatcher": "^5.4" }, "autoload": { "psr-4": { "EventDispatchers\": "src" }, "classmap": ["src"] } }
Mettez à jour l'autoloader:
composer dump -o
Maintenant, la classe EventDispatcher est prête à être utilisée. Nous allons créer des cours d'événement et d'écoute, puis les connecter.
Exemple: basic_example.php
Créer 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);
La méthode stopPropagation()
arrête la propagation des événements. La méthode isPropagationStopped()
vérifie si la propagation a été arrêtée.
en utilisant les fermetures de PHP comme auditeurs
Au lieu des objets, les fermetures de PHP peuvent servir de auditeurs:
<?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');
La méthode addListener
utilise désormais une fermeture comme deuxième argument.
Conclusion
Le Dispatcher d'événements Symfony facilite la programmation axée sur les événements dans PHP, créant des applications à couplage librement et facilement maintenables. Cela permet aux composants de communiquer efficacement sans dépendances directes.
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!