La cache de configuración está compuesta por una colección de clases que optimizan
el uso de archivos de configuración YAML automatizando su conversión en código
PHP y guardando ese código en el directorio de la cache para ejecutarlo. Este
mecanismo hace innecesario cargar los contenidos de nuestros archivos de
configuración en objetos sfYaml
antes de aplicar sus valores.
A continuación se añade la cache de configuración en nuestra solución para
mejorar los formularios. En lugar de cargar los archivos forms.yml
en objetos
sfYaml
, se va a solicitar la versión pre-procesada de estos archivos a la
cache de configuración de la aplicación actual.
Para ello la clase sfFormYamlEnhancer
necesita acceder a la cache de configuración
de la aplicación actual, así que vamos a incluirla en el constructor.
class sfFormYamlEnhancer
{
protected
$configCache = null;
public function __construct(sfConfigCache $configCache)
{
$this->configCache = $configCache;
$this->configCache->registerConfigHandler('config/forms.yml',
'sfSimpleYamlConfigHandler');
}
// ...
}
A la cache de configuración se le debe indicar qué hacer cuando la aplicación
solicita un determinado archivo de configuración. Por el momento, el código
indica a la cache de configuración que utilice sfSimpleYamlConfigHandler
para
procesar el archivo forms.yml
. Este gestor de configuración simplemente procesa
el archivo YAML, lo convierte en un array y lo guarda en la cache como código
PHP.
Una vez que se ha añadido la cache de configuración y se ha registrado un gestor
de configuración para forms.yml
, ya se puede hacer uso de ellos en lugar de
sfYaml
:
public function enhance(sfForm $form)
{
$config = include $this->configCache->checkConfig('config/forms.yml');
// ...
}
Esta solución es mucho mejor. No sólo se ha eliminado la necesidad de procesar
los archivos YAML (salvo en la primera petición) sino que también se hace uso
de la instrucción include()
de PHP para poder aprovechar los sistemas de
cache de PHP.