DOCUMENTATION Quand vous cherchez de la doc ou de l'aide. Utilisez S y m f o n y 2 (majuscule, pas d'espace). Il y a tellement de ressources disponibles pour symfony (1.x) que vous perdriez du temps à trier.
BOOTSTRAPPING Utilisez la Standard Edition. Mais nettoyez! Supprimez le AcmeDemoBundle Supprimez les dépendances dont vous n'avez pas besoin Changez le favicon etc
PROFILER Interceptez les redirections (en dev). Cela vous facilitera le debug et vous permettra de voir plus facilement les informations collectées par le profiler.
SCM IGNORE app/cache/* app/logs/* app/bootstrap.php.cache web/bundles vendor app/config/parameters.yml Mais pour ce dernier, inclure un fichier app/config/parameters.yml.dist
VOS MOTS DE PASSE SONT CONFIDENTIELS! Ne mettez pas d'identifiants en dur dans la configuration (utilisez les parameters) Ne versionnez pas votre p a r a m e t e r s . [ i n i | y m l ] Utilisez les variables d'environnements
VOS MOTS DE PASSE SONT CONFIDENTIELS! # a p p / c o n f i g / c o n f i g . y m l d o c t r i n e : d b a l : u s e r n a m e : % d a t a b a s e _ u s e r n a m e % p a s s w o r d : % d a t a b a s e _ p a s s w o r d %
VOS MOTS DE PASSE SONT CONFIDENTIELS! # a p p / c o n f i g / p a r a m e t e r s . y m l p a r a m e t e r s : d a t a b a s e _ u s e r n a m e : s y m f o n y d a t a b a s e _ p a s s w o r d : s 3 c r 3 t
VOS MOTS DE PASSE SONT CONFIDENTIELS! < V i r t u a l H o s t * : 8 0 > S e r v e r n a m e w w w . d o m a i n . t l d # . . . S e t E n v S Y M F O N Y _ _ D A T A B A S E _ U S E R N A M E " s y m f o n y " S e t E n v S Y M F O N Y _ _ D A T A B A S E _ P A S S W O R D " s 3 c r 3 t " < / V i r t u a l H o s t >
APPLICATIONS? APPLICATION! Par défaut, une seule application existe dans un projet Symfony2. Il est extrêmement rare d'en avoir besoin de plusieurs, réfléchissez-y bien.
APPLICATIONS Si vous voulez vraiment en utiliser plusieurs, votre arborescence doit être uniforme et respecter un maximum celle de la Standard Edition (dossier a p p ).
BUNDLES Un Bundle = Une Fonctionnalité Si vos bundles ont pour vocation à être réutilisés, et si vos bundles sont découplés. U s e r B u n d l e = > G e s t i o n U t i l i s a t e u r F o r u m B u n d l e = > F o r u m P r o d u c t B u n d l e = > G e s t i o n d e p r o d u i t s S t o r e B u n d l e = > E - C o m m e r c e
BUNDLES & COMPONENTS/LIBRAIRIES Idéalement, vos bundles ne doivent être que le lien entre Symfony2 et votre logique métier. Cette logique métier doit être indépendante. Inspirez vous du découplage entre Bundles et Components de Symfony2.
ROUTING Aucune route ne doit être déclarée dans a p p / c o n f i g / r o u t i n g . y m l . Ce fichier doit uniquement contenir des imports, les déclarations des routes doivent se trouver dans le même bundle que le controlleur associé à cette route.
INCONTOURNABLE Aucun code métier dans les controlleurs. Ils doivent récupérer les services (ou instancier les objets métier) et les appeler puis passer le résultat à la vue. C'est tout!
LONGUEUR Max 20 lignes par action Au dessus, cela signifie souvent qu'ils contiennent de la logique métier. Pas plus de 10 actions par controlleurs Au dessus, ça devient inmaintenable.
LONGUEUR Les annotations peuvent vous permettre de garder vos controlleurs légers et sans fioritures. Elles vous permettent également de centraliser l'information et de rassembler une déclaration de route avec l'action associée.
ORM Utilisez vos entités pour le stockage d'informations. Utilisez des classes métiers dédiées pour les manipuler. "Treat your entities like princesses". Facilite les TU, le refactoring et le découpage bundles/components.
DIC Ne mettez pas de chemin en dur. Vous pouvez utiliser % k e r n e l . r o o t _ d i r % ou déterminer les chemins au moment de la compilation du DIC.
BUNDLES Vous ne devez pas avoir d'import de configuration des bundles dans a p p / c o n f i g / c o n f i g . y m l . C'est l'extension DI du bundle qui doit s'en charger.
BUNDLES Utilisez la configuration sémantique # a p p / c o n f i g / c o n f i g . y m l m y _ b u n d l e : f o o : b a r m y _ f e a t _ i s _ e n a b l e d : t r u e f e a t _ c o n f i g : l o r e m : i p s u m
BUNDLES Validez cette configuration vous permet: de modulariser (charger si nécessaire) vos services. de vous assurer que la configuration est correcte au moment du warmup... et d'afficher des messages clairs au développeur en cas d'erreur.