Notre retour sur le SymfonyLive Paris 2023

JoliCode - JoliCodeBlog - 27/03
Nous étions nombreux de JoliCode à assister, la semaine dernière, à une nouvelle édition du SymfonyLive Paris. Cette conférence se déroule depuis des années au sein de la magnifique Cité Universitaire de Paris. Voici notre retour sur ces 2 jours de conférences dans l'écosystème Symfony.

Nous étions nombreux de JoliCode à assister, la semaine dernière, à une nouvelle édition du SymfonyLive Paris. Cette conférence se déroule depuis des années au sein de la magnifique Cité Universitaire de Paris. Voici notre retour sur ces 2 jours de conférences dans l’écosystème Symfony.

Section intitulée symfony-et-ses-composantsSymfony et ses composants

Plusieurs conférences se sont attardées sur des composants spécifiques de Symfony, qu’ils soient tout nouveaux comme le Scheduler, présenté par Fabien Potencier, ou bien plus ancien comme le composant Console, dont nous a parlé Robin Chalas.

Section intitulée keynote-fabien-potencierKeynote – Fabien Potencier

Tradition oblige, ce SymfonyLive s’est ouvert avec la Keynote de Fabien Potencier. Dans celle-ci, il nous présente le composant Scheduler qui arrivera avec la prochaine version de Symfony, aka 6.3.

Ce composant, proposé initialement par un membre de la communauté (congrats Sergey Rabochiy!), n’est pas une ré-implémentation de Cron en PHP. L’idée est de fournir un outil simple à l’usage et qui s’intègre parfaitement dans un projet Symfony, pour effectuer des tâches à intervalles réguliers.

Ce Scheduler tire parti du composant Messenger. Pas de cron à mettre à place, uniquement un worker messenger classique à lancer. C’est le transport Messenger configuré pour le scheduler qui va émettre le message représentant la tâche à effectuer dans le bus messenger. Ensuite ce message sera dispatché au handler correspondant. Il est possible de dispatcher un message programmé dans un transport asynchrone afin de ne pas bloquer le scheduler.

Ce système permet de configurer la récurrence des tâches de manière très précise :

RecurringMessage:every(string $frequency, object $message, from: $from, until: $until)

La récurrence ($frequency) peut s’exprimer avec tous les formats compris par le DateInterval natif de PHP (one hour, last day of next month, etc). Nous pouvons même avoir une récurrence exprimée en secondes, contrairement au système Cron classique qui n’offre qu’une granularité minimale à la minute.

Enfin, comme de nombreux autres composants, Scheduler s’appuie sur plusieurs composants de Symfony plus bas niveaux comme Lock et Cache afin de répartir les traitements sur plusieurs workers.

Section intitulée reinventer-le-composant-console-de-symfony-robin-chalasRéinventer le composant Console de Symfony – Robin Chalas

Robin a débuté sa conférence en présentant rapidement le composant Console et surtout son taux d’adoption par des outils divers et variés : Composer, Drupal, Laravel, Magento, Sylius, PHPStan, etc. La liste est longue car c’est le composant Symfony le plus utilisé. Cette adoption est un signe très encourageant, mais c’est aussi un souci lors de la moindre modification du code. Un simple bug fix peut facilement casser un de ces outils.

Robin a ensuite poursuivi avec un petit historique des évolutions que le composant a pu connaître. À l’origine, une commande devait nécessairement être une classe PHP, suffixée Command, placée dans le dossier src/Command et étendre la classe Command du framework. Grâce à de nombreuses améliorations progressives, nous pouvons maintenant écrire une simple classe PHP grâce notamment aux attributs PHP 8.

#[AsCommand(name: "user:create") final class CreateUserCommand { public function __invoke( OutputInterface $output...
[Courte citation de 8% de l'article original]
Loading...