Configuración del bundle: Configurar el Servicio de Caché
Keep on Learning!
If you liked what you've learned so far, dive in! Subscribe to get access to this tutorial plus video, code and script downloads.
With a Subscription, click any sentence in the script to jump to that part of the video!
Login SubscribeHasta ahora, hemos aprendido a utilizar los servicios Cliente HTTP y Caché, y los hemos inyectado en homepage()
. Pero no somos responsables de crear sus objetos. Ya sabemos que los bundles nos proporcionan servicios, y cuando autoconectamos un servicio, nuestro bundle nos proporciona todos los detalles que necesitamos para instanciarlo. Pero si es otro el responsable de instanciar esos objetos, ¿cómo podemos controlarlo? La respuesta es la configuración del bundle.
Abre el directorio /config/packages
. Todos estos archivos de configuración de .yaml
se cargan automáticamente en nuestra aplicación Symfony, y su función es configurar los servicios que nos proporciona cada bundle. En nuestro método homepage()
, justo al principio, vamos a dd($cache)
para que podamos ver el nombre de la clase del objeto que estamos obteniendo.
// ... lines 1 - 13 | |
class MainController extends AbstractController | |
{ | |
// ... line 16 | |
public function homepage( | |
// ... lines 18 - 20 | |
): Response { | |
dd($cache); | |
// ... lines 23 - 38 | |
} | |
} |
Por ejemplo, para el servicio de caché, FrameworkBundle
le dice al contenedor de servicios:
Cuando te pida el
CacheInterface
, quiero quiero que instancies esteTraceableAdapter
objeto con un conjunto específico de argumentos que necesite.
Así que parece que nuestro servicio de caché es sólo este TraceableAdapter
, pero si miramos más de cerca, podemos ver que en realidad es una envoltura alrededor de un FilesystemAdapter
, y la caché se almacena dentro del sistema de archivos. Eso está bien, pero ¿y si en lugar de eso queremos almacenar la caché en la memoria? ¿O en algún otro lugar del sistema de archivos? Aquí es donde brilla la configuración del bundle. Abre framework.yaml
y encuentra esta clave raíz framework
. Esto significa que estamos pasando configuración a FrameworkBundle
, y que utilizará esa configuración para cambiar cómo instanciar sus servicios. Por cierto, el nombre del archivo aquí no es importante. Podríamos llamarlo pizza.yaml
y funcionaría igual.
// ... line 1 | |
framework: | |
secret: '%env(APP_SECRET)%' | |
// ... lines 4 - 24 |
Bien, dirígete a tu terminal y ejecuta
Configuración de depuración
bin/console debug:config framework
Esto nos muestra la configuración actual. Para ver la configuración completa, ejecuta:
bin/console config:dump framework
Eso es mucha información. Vamos a reducirla. Si queremos ver sólo la configuración responsable del servicio de caché, ejecuta:
bin/console config:dump framework cache
Adaptador de matriz de caché
Mucho mejor. En cache.yaml
, podemos ver que sigue formando parte de la configuración de framework
, sólo que separada en archivos diferentes para su organización. Debajo de este ejemplo, vamos a poner app
en cache.adapter.array
.
framework: | |
cache: | |
// ... lines 3 - 16 | |
app: cache.adapter.array | |
// ... lines 18 - 22 |
Bien, de vuelta al navegador, actualiza. ¡Genial! Esto ha cambiado a ArrayAdapter
. Dirígete y elimina dd($cache)
para que podamos ver cache.array.adapter
en acción. Vuelve a actualizar la página, y... ¡ah! Cada vez que actualizamos la página, estamos ejecutando la petición HTTP, por lo que la caché sólo está activa durante la petición. Cuando iniciamos una nueva petición, la caché se invalida y volvemos a ver esa petición HTTP.
A continuación: Echemos un vistazo más de cerca al autocableado.
It seems that the command in the answer explanation of the challenge was mixed up (the correct answer is
bin/console debug:config twig
)