Cache del Contenedor de Symfony

82
https://twitter.com/manuel_j555 https://github.com/manuelj555 http://manuelj555.github.io/ Manuel Aguirre - Venezuela

Transcript of Cache del Contenedor de Symfony

https://twitter.com/manuel_j555

https://github.com/manuelj555

http://manuelj555.github.io/

Manuel Aguirre - Venezuela

Durante la lectura de la siguiente presentación se visualizarán

en cada pantalla una serie de imágenes, que a primera vista no

tienen un orden especifico.

Lo que se pretende mostrar es el código generado en caché por el

componente de inyección de dependencias de symfony, a partir de

las definiciones escritas en archivos YAML.

Prácticamente todo el código mostrado en esta presentación es

tomado de la Caché del contenedor.

La idea es mostrar la potencia del componente y de como podemos

tener aplicaciones eficientes gracias al uso del mismo.

Parámetros del contenedor

Contienen las Instancias creadas

Ámbitos de los servicios en la Aplicación

El propio contenedor es un servicio

Alias de algunos servicios

MethodMap: id de servicios apuntan

a métodos del contenedor.

Cada servicio es un método protegido.

Los parámetros pasan a valores estáticos

calls: array de métodos de la clase que se

llamarán al instanciar el servicio.

La primera posición de cada array es un string con el nombre del método

La segunda posición de cada array es otro array con los argumentos que

se pasarán a cada método.

call_user_func: Invoca a una función o método.

Método de la clase Debugbar, lo usaremos para obtener el JavascriptRenderer

@= (ExpressionEngine) permite escribir

código que luego es compilado a php.

@= (ExpressionEngine) permite escribir

código que luego es compilado a php.

Instancia local

Como permitir la extensión del debugbar con nuevos colectores sin

modificar el propio servicio?

Etiquetamos los servicios (colectores) con el tag debugbar.collector

Buscamos los servicios con la Etiqueta debugbar.collector

Obtenemos la definición del servicio debugbar

Por cada servicio etiquetado con el nombre debugbar.collector agregamos una llamada al

método addCollector de la clase Debugbar y le pasamos el servicio correspondiente.

Al cachearse el contenedor, nos genera las llamadas a

addCollector por cada servicio etiquetado

Cada colector etiquetado

• http://manuelj555.github.io/2014/02/27/inyeccion-de-dependencias.html

• http://gitnacho.github.io/symfony-docs-es/

• http://symfony.com/doc/current/index.html

• http://symfony.es/

• http://yosymfony.com/