Este foro ya no está activo, así que no puedes publicar nuevas preguntas ni responder a las preguntas existentes.

Cuándo usar clases o servicios en Symfony

15 de abril de 2015

Un saludo a la comunidad Symfony.

Cuando programaba en PHP plano y necesitaba encapsular un problema, creaba una clase que resolviese ese problema (por ejemplo generar un CSV), pero desde que estoy trabajando con Symfony, cuando me enfrento a un problema similar, suelo crear un servicio.

No obstante, viendo código de otros, veo que la gente sigue usando clases para resolver problemas, para los que yo uso servicios. Mi pregunta es, ¿qué debo usar clases o servicios? ¿ Hay alguna diferencia notable entre usar una cosa u otra, si es que la hay? ¿Se usan en situaciones distintas?, y si es así, ¿cuándo usar clases y cuando servicios?

Gracias.


Respuestas

#1

La regla general es muy clara: siempre hay que usar servicios. Otra cosa es que motivos fuera de nuestro control nos obliguen a veces a usar clases o hacer chapuzas en nuestra aplicación.

Si un programador ha decidido voluntariamente usar clases a pelo en una aplicación Symfony, es muy probable que esté haciendo mal las cosas. De hecho, el único new que deberías ver en una aplicación Symfony es el de las entidades de Doctrine.

La gran ventaja de definir servicios para las clases es que están disponibles en cualquier parte de la aplicación a través del contenedor de servicios. La otra gran ventaja es que los servicios permiten en general hacer aplicaciones más flexibles. Por ejemplo, en vez de usar un mailer o un logger concreto, usas un servicio mailer o logger. Esto permite cambiar la clase que envía emails o loguea sin tener que tocar la aplicación. Sólo tienes que cambiar la definición del servicio y todo seguirá funcionando igual.

@javiereguiluz

15 abril 2015, 9:44
#2

Muchas gracias, Javier.

@Ukem_es

15 abril 2015, 12:33