EventDispatcher
2 exercises work on this concept, by writing code in the browser.
In Practice
- Listeners that position themselves relative to each other #[AsEventListener(after: …, before: …)]: the order of listeners is stated by their names, no longer by guessed priorities.
- Readable subscribers: method and priority ['trace', 100] becomes ['method' => 'trace', 'priority' => 100]: getSubscribedEvents() finally says what each slot holds.