Après le Symfony Live 2013, pour tous ceux qui n'ont pas pu venir, voici notre condensé des bonnes pratiques à respecter avec Symfony2 :
-
Lire et relire la documentation officielle pour rester à jour.
-
Respecter les codings standards (voir Coding standars et CSFixer).
-
Découpage en Bundle : Créer un bundle pour gérer une fonctionnalité globale (ex: partie forum) ou s'il a vocation à être réutilisé. Attention : ne pas forcement découper ses fonctionnalités en plusieurs bundle si elle sont interdépendantes.
-
Définir une configuration pour ses bundles via le DI : permet de ne charger que le nécessaire, de valider la configuration, afficher des messages d'erreurs clairs, etc.
-
Si possible, ne pas mélanger Symfony2 et logique métier. Découper les objets métier en deux : le mapping SF2 dans une entité, la logique métier dans un model distinct.
-
Pas de logique métier dans les contrôleurs. Faire appel à des services et des repository puis passer le resultat à la vue.
Penser aux annotations pour alleger les controlleurs. -
Toujours écrire des FormType pour faire des formulaires. Les déclarer en service et leur passer des arguments (plutôt que de leur passer des options).
-
Faire un service pour gérer la session (qui prend la session en argument) plutôt que de la gérer à plusieurs endroits dans les contrôleurs.
-
Utiliser le DIC ! (Dependency Injection Component).
-
Travailler avec des Test unitaires et fonctionnels. Avec les outils intégrés et ceux disponibles en parallèle.
-
Utiliser Twig et Assetic.
-
Écrire des commandes pour les tâches répétitives.
-
Internationaliser dès le début du projet.
-
En environnement de développement : Utiliser le Profiler, intercepter les redirections.
-
En production : supprimer
app_dev.php
et autres, fournir une clé secrète, activer les CSRF, activer les caches Doctrine, personnaliser les pages d'erreurs.
Et aussi :
De manière général, veiller à la qualité et respecter les bonnes pratiques dans tous les aspects du projet : configuration serveur, HTML, CSS, Javascript, Git, etc.
Un grand merci à Tugdual Saunier
Sources:
Conférence au Symfony Live 2013 : "42 bonnes pratiques pour Symfony2" par Tugdual Saunier - Sensio