viernes, 4 de diciembre de 2009

Bootstrap para plugins

El archivo APP/config/bootstrap.php de una aplicación CakePHP nos sirve como lugar donde cargar funciones, cargar configuraciones, iniciar variables o definir constantes globales para nuestra aplicación.

Estos días me encontré con la necesidad de disponer de una funcionalidad parecida para los plugins. La idea es interesante, se trata de poder disponer, entre otras cosas, de ajustes de configuración y constantes definidas en los plugins pero que sean accesibles desde otras partes de la aplicación.

La cuestión es cómo hacer ese "bootstrapping" para plugins de forma "automágica".

A mí se me ha ocurrido usar este fragmento de código en el bootstrap de la aplicación

<?php
App::import('Core', 'Folder');
$folder =& new Folder();
$folder->cd(APP . 'plugins');
$files = $folder->findRecursive('bootstrap\.php');
foreach ($files as $file) {
include_once($file);
}
?>

La explicación es bastante sencilla. La clase Folder nos permite apuntar a un directorio, en este caso plugins, y obtener todos los archivos cuyo nombre se ajuste a un patrón grep, cuyos paths se obtienen en un array. Luego no tenemos más que hacer include de cada uno de los archivos y ya tenemos nuestros bootstrapping.

2 comentarios:

Yevgeny dijo...

It is uneffective and i can recommentd you to implement file joiner for generate common bootstrap file

Frankie dijo...

Could you post some sample code? Thank you.