Dans ce tutoriel je vous propose de découvrir le principe du composant Workflow qui va permette de mettre en place une logique de machine à états finis dans votre application Symfony (mais on peut aussi l'utiliser en mode standalone).
Cette approche permet de représenter la logique de votre application comme un ensemble d'états prédéfinis qui vont être liés ensembles par des transitions. C'est une approche très pertinente si vous avez à créer une logique métier complexe.
Survolons le fonctionnement
On commencera par installer le module
Ensuite on peut décrire notre machine de différentes manière (on utilisera ici du YAML mais vous pouvez le faire aussi en PHP et XML)
On utilise ici un type state_machine mais on peut aussi utiliser un type workflow qui permet à un élément d'être dans plusieurs états à la fois (l'état sera alors représenté par un tableau de chaîne). Dans le cas des workflow une transition ne pourra être prise que lorsque l'élément est dans tous les états demandés dans le from.
Dans notre entité on peut créer le champs qui permettra de sauvegarder l'état de notre élément.
Enfin, vous pourrez utiliser votre Workflow pour mettre à jour l'état de votre entité depuis n'import quel service.
Il sera aussi possible d'utiliser une série d’événements qui permettront d'ajouter des comportements particuliers ou de bloquer certaines transitions.
Pour aller plus loin
Si la théorie vous a donné envie et que vous souhaitez voir un cas d'utilisation des Workflow je vous renvoie sur la vidéo "# Un Workflow de pro avec Symfony 5 !" de yoan dev.