Changer le template des migrations Doctrine sous Symfony

Retour aux articles Dans #php le 24/05/2019 par Emmanuel BALLERY

Pour gérer votre base de données et notamment ses migrations dans le temps, Doctrine propose le bundle DoctrineMigrationsBundle qui vient désormais par défaut lorsque vous installez une application Symfony 4.

Je ne reprendrai pas ici l'usage de cette librairie, la documentation étant plutôt exhaustive. Il y a cependant un élément qui me gène à chaque fois que je génère une migration : le fichier généré par défaut n'est pas formaté comme je le souhaite.

  • Nous n'avons pas forcément l'entête PHP declare(strict_types=1); ;
  • Les PHP docs au dessus de la classe générée et des méthodes ne sont pas toujours correctes et j'aimerai ajouter des métadonnées autres comme l'auteur @author ;
  • ...

Des broutilles vous me direz, mais à la longue je gagne du temps.

Les migrations son générées à partir d'un template hébergé au sein du code du bundle. Mais il est possible de fournir votre propre template et de le customiser comme bon vous semble.

Sous Symfony 4, vous retrouverez la configuration du DoctrineMigrationsBundle dans le fichier config/packages/doctrine_migrations.yaml. Je passe sur les clés inutiles, vous pouvez configurer la clé custom_template et lui indiquer le chemin vers un fichier textuel qui contient le template de vos migrations.

Direction ensuite votre dossier src/Migrations/ pour créer ce fichier template.php.txt (ou ailleurs si vous avez décidé d'une autre configuration). Le langage est relativement simple, il vous suffit de rédiger votre classe PHP, et de placer certains marqueurs aux endroits ou le bundle devra compléter par des informations dynamiques. Les placeholders sont les suivants : namespace, version, up, down.

Ce qui nous donne dans mon cas :

Désormais, toutes les migrations que je génère via la commande php bin/console doctrine:migration:diff respectent le template que je viens de rédiger.

Retour aux articles