Symfony 8.2 Nouveauté Publié le

Des abonnés lisibles : method et priority

['tracer', 100] devient ['method' => 'tracer', 'priority' => 100] : getSubscribedEvents() dit enfin ce que contient chaque case.

Notions abordées : EventDispatcher

Nouveau dans Symfony 8.2 (en développement). getSubscribedEvents() acceptait trois formes positionnelles, et aucune ne disait ce que contenaient ses cases. Il fallait connaître la convention pour lire ['onFoo', 10], et c'était pire avec des tableaux imbriqués. Symfony 8.2 accepte aussi une forme nommée, partout où la forme positionnelle était acceptée.

Avant

return [
    KernelEvents::REQUEST => ['onRequest', 10],
    KernelEvents::RESPONSE => [
        ['onEarlyResponse', 100],
        ['onLateResponse', -100],
    ],
];

Depuis Symfony 8.2

return [
    KernelEvents::REQUEST => ['method' => 'onRequest', 'priority' => 10],
    KernelEvents::RESPONSE => [
        ['method' => 'onEarlyResponse', 'priority' => 100],
        ['method' => 'onLateResponse', 'priority' => -100],
    ],
];

priority est facultative et vaut 0 par défaut. Les deux formes peuvent se mélanger dans une même liste, et les anciennes continuent de fonctionner.

À faire

Réécrivez EtapesSubscriber::getSubscribedEvents() avec la forme nommée, sans changer les méthodes ni les priorités. L'aperçu /etapes affiche Étapes exécutées : requete, trace, signature — le même ordre que l'en-tête X-Etapes, qui doit rester requete,trace,signature.

D'où vient la fonctionnalité : la pull request d'origine.