En pocas palabras, un servicio es cualquier objeto PHP que realiza algún tipo de tarea global. La palabra servicio es una palabra deliberadamente genérica que se utiliza en el ámbito de la informática para describir un objeto creado para un propósito específico (por ejemplo, el envío de emails). Cada servicio se puede utilizar en cualquier parte de la aplicación. No tienes que hacer nada especial para crear un servicio: simplemente escribe una clase PHP con algo de código que realice una tarea específica. ¡Felicidades, acabas de crear un servicio!
Nota Por regla general, un objeto PHP es un servicio si se utiliza a nivel global en tu aplicación. Un objeto llamado Mailer
que envía emails sí que es un servicio, pero cada uno de los objetos de tipo Message
que representan a los emails enviados no son servicios. Del mismo modo, un objeto llamado Producto
no es un servicio, pero un objeto que persiste objetos Producto
en la base de datos sí que es un servicio.
Entonces, ¿cuál es la ventaja de los servicios? La ventaja de pensar en servicios es que te obliga a separar cada funcionalidad de tu aplicación en una serie de servicios. Como cada servicio se limita a una tarea específica, puedes acceder fácilmente a cada servicio y usar su funcionalidad siempre que la necesites.
Cada servicio también se puede probar y configurar muy fácilmente, ya que es independiente del resto de funcionalidades de la aplicación. Esta idea se llama arquitectura orientada a servicios y no es única ni de Symfony2 ni de PHP. Estructurar tu aplicación en base a un conjunto de servicios independientes es una buena práctica de la programación orientada a objetos. Conocer esta arquitectura es imprescindible para ser un buen programador en cualquier lenguaje de programación.