Ver índice de contenidos del libro

5.3. Servicios predefinidos de Silex

Silex define muchos servicios listos para utilizar o para reemplazarlos por tu propio código. En la mayoría de aplicaciones no necesitas ni siquiera utilizar estos servicios en tu propio código, ya que muchos son de uso preferentemente interno de Silex.

request: almacena el objeto que representa a la petición actual del usuario, que es una instancia de la clase Request. Este objeto te permite, entre otras muchas cosas, acceder a los parámetros GET y POST de la petición.

Ejemplo de uso:

$id = $app['request']->get('id');

Este servicio solo está disponible cuando la aplicación está procesando una petición. Además, solo está disponible dentro de un controlador, un middleware de tipo before o after y un gestor de errores.

routes: almacena el objeto de tipo RouteCollection que utiliza Silex internamente para gestionar el enrutamiento. Puedes añadir, leer o modificar las rutas que quieras.

controllers: almacena el objeto de tipo Silex\ControllerCollection que se usa internamente. Lee el capítulo sobre el funcionamiento interno de Silex para obtener más información.

dispatcher: almacena el objeto de tipo EventDispatcher que es la clave del sistema de eventos de Symfony y Silex utiliza para todas sus operaciones internas.

resolver: almacena el objeto de tipo ControllerResolver y es de uso interno. Se encarga de ejecutar el controlador con los argumentos adecuados.

kernel: almacena un objeto de tipo HttpKernel que se utiliza internamente. Este es el verdadero núcleo de las aplicaciones Symfony, ya que transforma las peticiones en objetos Request y genera las respuestas a los usuarios a partir de los objetos Response.

request_context: se trata de una versión simplificada de la petición y lo utilizan tanto el sistema de enrutamiento como el sistema encargado de generar URL, llamado UrlGenerator.

exception_handler: se trata del gestor de errores que se utiliza por defecto si no se define un gestor propio mediante el método error() o si tu gestor de errores no devuelve un objeto de tipo Response. Puedes desactivarlo con la instrucción $app['exception_handler']->disable().

logger: almacena una instancia de LoggerInterface. Por defecto su valor es null para desactivar el sistema de logs y así mejorar el rendimiento de la aplicación. Cuando se activa, se utiliza por defecto la librería Monolog para gestionar la información de log.

Nota Todos estos servicios predefinidos se definen como servicios compartidos.