Symfony2 : Les commandes importantes
Elliott Chiaradia |19-01-2016
Symfony2 dispose d’innombrables commandes. Bien qu’elles ne soient, à mon humble avis, pas toutes utiles, s'en passer nous ferait perdre un temps considérable et nous obligerait à devoir répéter du travail pas franchement intéressant.
Dans cet article, je vais vous présenter quelques commandes Symfony2. Celles que j'utilise fréquemment et que je trouve important de connaître. Grâce à elles, vous allez par exemple pouvoir créer une base de données, générer automatiquement des getters et des setters, lister les routes de votre projet ou encore supprimer le fameux cache de Symfony2 qui nous embête tant, nous développeurs, et cela en très peu de temps ! Oui, vous verrez, elles sont très utiles, ne vous en privez pas !
L'article est séparé en deux chapitres. Le premier contient les commandes générales, tandis que le second présente les commandes spécifiques à Doctrine. Bonne lecture :)
Commandes générales
Afficher la liste des commandes Symfony2
Liste les commandes disponibles, y compris les commandes héritées des bundles supplémentaires que vous avez installés.
php app/console list
Créer un nouveau bundle
Puisque dans Symfony2 tout est bundle, cette commande est essentielle.
php app/console generate:bundle
Après avoir effectué cette commande, le bundle namespace vous sera demandé. Celui-ci doit suivre la convention suivante : Deux lettres qui définissent le nom de l’entreprise (ou vos initiales), le caractère « / », le nom de votre bundle, la chaine de caractère « Bundle ».
Allons-y avec un exemple, ça sera sans doute plus clair !
Voici mon bundle namespace : AA/NomBundle
Pour :
- AA = initiales
- Nom = nom du bundle
- Bundle = suffixe obligatoire pour indiquer à Symfony qu'il s'agit bel et bien d'un bundle.
Pour le "bundle name", il est conseillé d'utiliser le même nom que celui du "bundle namespace" mais sans le "/". Dans notre exemple, nous aurions le "bundle name" suivant : "AANomBundle".
Supprimer le cache
Pour supprimer le cache de la production :
php app/console cache:clear -e prod
Et pour le mode développement :
php app/console cache:clear -e dev
Par défaut, si vous ne spécifier pas le "-e dev" ou "-e prod", c'est le cache du mode développement qui sera supprimé.
Pour supprimer le cache sans ligne de commande, vous devez supprimer les répertoires et fichiers présents dans le dossier app/cache. Plus fastidieux qu'une petite commande non ?
Afficher les routes de votre application
Cette commande peut être très utile si vous avez plusieurs fichiers de routing et que vous avez un doute sur une url. Les routes sont classées par nom.
php app/console debug:router
Doctrine
Les commandes dédiées à Doctrine sont d’après moi les plus intéressantes et c'est sans doute celles que j'utilise le plus. Vous verrez, on peut faire beaucoup de choses avec !
Lister la liste des commandes doctrine :
Vous ne vous souvenez plus de la syntaxe d’une commande doctrine ? Pas de problème, vous allez sans doute la retrouver grâce à cette commande :
php app/console list doctrine
Créer une base de données
Dans une configuration standard, le fichier config.yml va rechercher les informations spécifiques à la base de données dans votre fichier app/config/parameters.yml. C'est dans celui-ci que vous devez définir la configuration de votre base de données.
Exemple du fichier parameters.yml :
parameters:
database_host: 127.0.0.1
database_port: null
database_name: nomdelabase
database_user: root
database_password: null
mailer_transport: smtp
mailer_host: 127.0.0.1
mailer_user: null
mailer_password: null
secret: ThisTokenIsNotSoSecretChangeIt
À l’exécution de la commande suivante, la base de données sera créée avec la configuration paramétrée dans parameters.yml.
php app/console doctrine:database:create
Supprimer une base de données
Le --force est obligatoire, sans quoi vous aurez un message de mise en garde. Ben ouais, on ne rigole pas avec une commande aussi destructrice !
php bin/console doctrine:database:drop --force
Mettre à jour la structure de votre base de données
Cette commande compare l’état actuel de vos entités et l’état de votre base de données, afin que cette dernière soit à jour. Elle est donc très utile mais elle peut aussi être dangereuse !
php app/console doctrine:schema:update --force
C’est pourquoi je ne peux que vous conseiller d’exécuter la commande suivante avant de mettre à jour toute la structure de votre database. Elle affiche les modifications qui vont être effectuées dans votre base de données (sous la forme de code SQL), il ne vous reste plus qu’à contrôler, et si ça vous semble correct, lancez un –force !
php app/console doctrine:schema:update --dump-sql
Générer une entité
Pour créer une nouvelle entité, vous devez exécuter cette commande :
php app/console generate:doctrine:entity
On va vous demander le nom de votre entité, il va falloir le rentrer avec le format suivant : MonBundle:MonEntite.
Exemple : Si vous avez un dossier « AA » (initial de votre nom ou entreprise) contenant un bundle « SuperBundle » et que vous voulez créer une entité « Tag », vous devriez entrer : AASuperBundle:Tag.
C’est maintenant l’heure de choisir le format de votre entité. De base, si vous appuyez sur "enter", vous choisirez le format « annotation », personnellement c’est celui que je conseille, mais si vous voulez absolument avoir un fichier en YML, libre à vous !
Cette commande vous offre aussi la possibilité de créer vos champs directement dans votre invite de commande, ce qui a l’avantage de créer automatiquement vos setter et getter. Pour ce faire, il suffit écrire le nom de votre futur champ, puis de choisir le type de données que va contenir le champ (string, int, etc.). La documentation de Doctrine contient la liste des types possibles.
Quand vous avez fini de créer vos champs, appuyez sur "enter". Et ne vous en faites pas, vous pourrez créer des champs supplémentaires par la suite, il vous suffit de modifier l'entité et de mettre à jour la structure de la base de données, comme expliqué précédemment. De plus, vous pourrez aussi créer les différents setters et getters de ces champs automatiquement, grâce à la commande présentée au point suivant.
Générer les setters et les getters pour une entité
La création des getters et des setters basiques est un véritable travail de singe ! Autant l'éviter et utiliser cette commande :
php app/console doctrine:generate:entities NomduBundle/Entity/NomEntite
Exemple :
- AA = initiales
- NomBundle = nom du bundle
- Tag = nom de l’entité
Nous devrions taper la commande suivante :
php app/console doctrine:generate:entities AA/NomBundle/Entity/Tag
Cette commande va générer les setters et les getters pour les fields de votre entité qui n’en ont pas encore. A noter que les getters et les setters peuvent être créés automatiquement à la création de l’entité, grâce à la commande vue précédemment, permettant de générer une entité.
php app/console generate:doctrine:entity
Conclusion
J’utilise principalement ces commandes-là. Cependant, en plus de celles-ci, j’ai souvent recours à des commandes propres à des bundles spécifiques. Par exemple, le Bundle FOSUserBundle permettant d’implémenter un système d’utilisateurs offre différentes commandes, comme fos :user :create qui, comme sa syntaxe l’indique, créer un nouveau user. C’est pourquoi, après avoir installé un bundle, je ne peux que vous conseiller d’aller lire sa documentation pour voir s’il y a des commandes pouvant vous être utiles. Si la documentation du bundle n'est pas bien faite, vous pouvez aussi tout simplement exécuter la commande php app/console list , qui va lister la totalité des commandes disponibles pour votre application, y compris celles rajoutées par des bundles supplémentaires.