Symfony sigue la filosofía de crear controladores muy pequeños y clases de modelo muy grandes (en inglés, thin controllers and fat models). Por eso los controladores de Symfony se comportan como una fina capa de código que une y coordina las diferentes partes de la aplicación.
La regla de oro de los controladores se resume en 5-10-20, ya que los controladores deberían definir 5 variables o menos, contener 10 acciones o menos e incluir 20 líneas de código o menos en cada acción. Aunque puede haber excepciones puntuales a esta regla, te puede servir como orientación para saber cuándo tienes que refactorizar tus controladores para convertir partes de su código en servicios.
Buena Práctica Haz que tus controladores extiendan de la clase Controller
base proporcionada por el bundle FrameworkBundle
y usa anotaciones para definir el enrutamiento, la caché y la seguridad siempre que sea posible.
Cuando acoplas los controladores al framework que estás utilizando, puedes aprovechar todas sus funcionalidades y eso aumenta tu productividad.
Como los controladores no son más que una capa muy fina que apenas contiene unas pocas líneas de código para unir las diferentes partes de la aplicación, dedicar decenas de horas a desacoplar ese código respecto al framework es un trabajo enorme que difícilmente te compensará a la larga.
Además, al usar anotaciones para el enrutamiento, la caché y la seguridad, se simplifica enormemente la configuración de la aplicación. Ya no tendrás que rebuscar entre decenas de archivos de configuración creados con diferentes formatos (YAML, XML, PHP). Ahora toda la configuración relevante está justo donde la necesitas y utiliza un único formato.
En resumen, la recomendación es desacoplar totalmente tu lógica de negocio respecto del framework, pero al mismo tiempo, acoplar totalmente los controladores y el enrutamiento al framework, para aprovechar todas sus posibilidades de la manera más ágil posible.