PSR 14 - Event Dispatcher
Objectif du PSR 14
Event Dispatching est un mécanisme courant et bien testé qui permet aux développeurs d'injecter de la logique dans une application facilement et de manière cohérente.
L'objectif de ce PSR est d'établir un mécanisme commun pour l'extension et la collaboration basées sur les événements afin que les bibliothèques et les composants puissent être réutilisés plus librement entre diverses applications et frameworks.
L'objectif est de disposer d'interfaces communes pour la distribution et la gestion des événements permettant aux développeurs de créer des bibliothèques pouvant interagir avec de nombreux frameworks et autres bibliothèques de façon commune.
Quelques exemples :
- Un cadre de sécurité qui empêchera l'enregistrement/l'accès aux données lorsqu'un utilisateur n'a pas l'autorisation.
- Un système commun de mise en cache pleine page.
- Bibliothèques qui étendent d'autres bibliothèques, quel que soit le framework dans lequel elles sont toutes deux intégrées.
- Un package de journalisation pour suivre toutes les actions entreprises dans l'application
Définitions
Event
- Un événement est un message produit par un émetteur. Il peut s'agir de n'importe quel objet PHP arbitraire.Listener
- Un écouteur est tout appelable PHP qui s'attend à recevoir un événement. Le même événement peut être passé à zéro ou plusieurs écouteurs. Un écouteur peut mettre en file d'attente un autre comportement asynchrone s'il le souhaite.Emitter
- Un émetteur est tout code arbitraire qui souhaite envoyer un événement. Ceci est également connu sous le nom de "code d'appel". Il n'est représenté par aucune structure de données particulière, mais fait référence au cas d'utilisation.Dispatcher
- Un Dispatcher est un objet de service auquel un émetteur donne un objet Event. Le répartiteur est chargé de s'assurer que l'événement est transmis à tous les auditeurs pertinents, mais doit reporter la détermination des auditeurs responsables à un fournisseur d'écouteurs.Listener Provider
- Un fournisseur d'écoute est chargé de déterminer quels auditeurs sont pertinents pour un événement donné, mais ne doit pas appeler les auditeurs lui-même. Un fournisseur d'écoute peut spécifier zéro ou plusieurs écouteurs pertinents.
Les Events
Les événements sont des objets qui servent d'unité de communication entre un émetteur et les auditeurs appropriés.
Les objets d'événement peuvent être modifiables si le cas d'utilisation appelle des écouteurs fournissant des informations à l'émetteur. Cependant, si une telle communication bidirectionnelle n'est pas nécessaire, il est recommandé que l'événement soit défini comme immuable ; c'est-à-dire défini de telle sorte qu'il manque de méthodes de mutation.
Les implémenteurs doivent supposer que le même objet sera passé à tous les auditeurs.
Il est recommandé, mais non obligatoire, que les objets Événement prennent en charge la sérialisation et la désérialisation sans perte ; $event == unserialize(serialize($event))
devrait être vrai. Les objets peuvent exploiter l'interface Serializable
de PHP , __sleep()
ou __wakeup()
des méthodes magiques, ou des fonctionnalités de langage similaires, le cas échéant.
Besoin d'aide ?
Rejoignez notre communauté officielle et ne restez plus seul à bloquer sur un problème !