Hace unos días encontré un documento con 30 consejos a tener en cuenta a la hora de desarrollar en symfony según Nicolas Perriault. Lo que se pretende con estos consejos es fomentar la comunicación entre los desarrollados y presentar unas reglas básicas para que la correcta programación con symfony, de forma que se realicen aplicaciones seguras, estables y reutilzables.
A continuación os dejo un resumen de los 30 consejos:
- Consejo 0: Siempre escribe “symfony”.
- Consejo 1: Maneja la vista dentro de la vista. No manejes nunca la vista desde el controlador o el modelo. El uso de slot puede ayudar bastante.
- Consejo 2: Siempre usa la protección CSRF (viene por defecto desde la versión 1.3).
- Consejo 3: Siempre usa redirect después de manejar datos con POST. (Puedes mostrar mensajes flash). Por propósitos de seguridad, por ergonomía, para evitar duplicados en la base de datos.
- Consejo 4: Sentencias SQL, instancias de Propel Criteria o Doctrine_Query siempre en el modelo.
- Consejo 5: No modificar nunca el núcleo de symfony. Si quieres añadir, cambiar o quitar cosas, extiéndelo (mediante plugins, herencia…). Afinando el archivo factories.yml y la captura de eventos nativos de Symfony puede ayudar mucho lograr este objetivo.
- Consejo 6: No meter etiquetas HTML dentro de PHP.
- Consejo 7: Si usas caché, recuerda configurarlo adecuadamente y activarlo. Además no te olvides de limpiarlo cada vez que modifiques un archivo .yml.
- Consejo 8: Usar nombres de rutas en vez de direcciones manuales en url_for, link_to y redirect. Además, las rutas por defecto deberían estar desactivada por defecto (al menos en apps que no funcionan en modulos admin-generator 1.0)
- Consejo 9: Escribir la documentación en inglés, incluyendo los comentarios del código.
- Consejo 10: Utiliza las excepciones. Muestra mensajes útiles al usuario final.
- Consejo 11: No despliegues en producción ficheros de desarrollo (como los *_dev.php)
- Consejo 12: Una clase de control no debe tener más de 15 métodos, y un método no debería tener más de 30 líneas.
- Consejo 13: Usa siempre el mismo formato para el código (mejor usando los “symfonys coding standards”)
- Consejo 14: Todo lo relacionado con el usuario y su sesión debería almacenarse en sfUser.
- Consejo 15: Nunca serializes objetos en la sesión.
- Consejo 16: Personaliza las páginas de error (404, 500..).
- Consejo 17: No deberías usar sfContext directamente en el modelo. Porque la instancia de sfContext puede difierir mucho en relación con el env utilizado (CLI, prueba, dev, prod…) Sería hacer que tu código fuera bastante incontrastable. Sí, es duro.
- Consejo 18: Evita la creación de una clase genérica con un montón de métodos estáticos. Es mejor escribir clases especializadas.
Consejo 19: Usar sfLogger para hacer debug, apoyado de FirePHP o FireSymfony.
- Consejo 20: Si se usa gestor de versiones para el código (svn, cvs), nunca subas ficheros con contraseñas o rutas absolutas. Ejemplo típico: el archivo databases.yml Distribuir configuración depende de la plataforma archivos.
- Consejo 21: Escribe y usa las pruebas funcionales. Probar funcionalmente la interfaz de usuario (por ejemplo, 404/403/401, seguridad y autenticación de usuarios, transacciones, formularios, etc)
- Consejo 22: Nunca escribas paths absolutos en el código. Haga su proyecto symfony portátiles.
- Consejo 23: No representes los objetos con su clave primaria en las URLs. Por razones de seguridad: PKs numéricos son fácilmente adivinar, mientras que los slugs no lo son. Para la usabilidad y SEO URL, es más sexy: /article/symfony-rulez.html que /article/123.html
- Consejo 24: Todas las variables de configuración deberían definirse en app.yml. Puede compartir todos los ajustes del proyecto (cross- applications) poniendo el archivo de configuración app.yml dentro de la carpeta raíz del proyecto.
- Consejo 25: Intenta no versionar las clases base creadas por symfony, ya que dificultarías el trabajo para futuras extensiones. Tal vez la gente va a querer ampliar o añadir comportamientos de las clases del modelo.
- Consejo 26: Usa el sistema de tareas de symfony para scripts de línea de comando (como tareas de administración del proyecto).
- Consejo 27: Altera la petición y la respuesta mediante filtros.
- Consejo 28: Siempre crea ficheros README, INSTALL y CHANGELOG cuando vayas a distribuir la aplicación. Plugin Symfony! = Sistema Operativo.
- Consejo 29: Puedes reusar funcionalidad y módulos entre aplicaciones escribiendo plugins.
- Consejo 30: Estudia el código de otros frameworks para ver qué hace bien cada uno y usarlo.
Bueno ya sabéis como hay que hacer bien las cosas en symfony.