Investigando, encontré una presentación de Nicolas Perriault en donde, basado en su experiencia, da 30 consejos a tener en cuenta a la hora de desarrollar en symfony. Como el mismo lo dice, son practicas discutibles lo que se busca con esto es mejorar la comunicación entre desarrolladores a través de la normalización y mejorar de la seguridad, mantenibilidad, portabilidad y la interoperabilidad mediante el aumento de código calidad.
Me pareció bastante interesante, por lo cual deseo compartirlas con ustedes en este post.
Tip 0: Siempre escribe “symfony”
Tip 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.
Tip 2: Siempre usa la protección CSRF (viene por defecto desde la versión 1.3)
Tip 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.
Tip 4: Sentencias SQL, instancias de Propel Criteria o Doctrine_Query siempre en el modelo.
Tip 5: No modificar nunca el núcleo de symfony. Si quieres añadir, cambiar o quitar cosas, extiéndelo (mediante plugins, herencia%85)
*Afinando el archivo factories.yml y la captura de eventos nativos de
Symfony puede ayudar mucho lograr este objetivo.
Tip 6: No meter etiquetas HTML dentro de PHP.
Tip 7: Si usas caché, recuerda configurarlo adecuadamente y activarlo. Además no te olvides de limpiarlo cada vez que modifiques un archivo .yml.
*Mejor: evitar el uso de caché. No es broma.
Tip 8: Usar nombres de rutas en vez de direcciones manuales en url_for, link_to y redirect.
*Además, las rutas por defecto debería estar desactivada
por defecto (al menos en apps que no funcionan en modulos
admin-generator 1.0)
Tip 9: Escribir la documentación en inglés, incluyendo los comentarios del código.
Tip 10: Utiliza las excepciones. Muestra mensajes útiles al usuario final.
Tip 11: No despliegues en producción ficheros de desarrollo (como los *_dev.php)
Tip 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.
Tip 13: Usa siempre el mismo formato para el código (mejor usando los “symfonys coding standards”)
Tip 14: Todo lo relacionado con el usuario y su sesión debería almacenarse en sfUser.
Tip 15: Nunca serializes objetos en la sesión.
Tip 16: Personaliza las páginas de error (404, 500..).
Tip 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 incontrastables
* Sí, es duro.
Tip 18: Evita la creación de una clase genérica con un montón de métodos estáticos. es mejor escribir clases especializadas.
*Es como reinventar procedimiento de programación o el uso de funciones.
*Escribe clases especializadas
Tip 19: Usar sfLogger para hacer debug, apoyado de FirePHP o FireSymfony.
Tip 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.
Tip 21: Escribe y usa las pruebas funcionales.
* Probar Funcionalmente la interfaz de usuario
(por ejemplo, 404/403/401 HTTP códigos, la seguridad y el usuario
autenticación, transacciones y formularios, etc)
Tip 22: Nunca escribas paths absolutos en el código.
* Haga su proyecto symfony portátiles.
Tip 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
Tip 24: Todas las variables de configuración deberían definirse en app.yml.
* Puede compartir todo el proyecto (cross-
applications) ajustes poniendo app.yml
archivo de configuración dentro de la raíz o carpeta de la
proyecto.
Tip 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.
Tip 26: Usa el sistema de tareas de symfony para scripts de línea de comando (como tareas de administración del proyecto)
Tip 27: Altera la petición y la respuesta mediante filtros.
Tip 28: Siempre crea ficheros README, INSTALL y CHANGELOG cuando vayas a distribuir la aplicación.
* Plugin Symfony! = Sistema Operativo.
Tip 29: Puedes reusar funcionalidad y módulos entre aplicaciones escribiendo plugins.
Tip 30: Estudia el código de otros frameworks para ver qué hace bien cada uno y usarlo.
* Puede ser que tengan buenas ideas, incluso mejor
para resolver el problema que tiene.
* Incluso los marcos escrito en otros
idiomas que PHP (Django, Rails,Primavera …)