Desde la versión 1.12.0, Zend Framework ofrece ahora múltiples estrategias de autocarga. A menudo, resulta útil emplear varias estrategias de autocarga a la vez; por ejemplo, podría tener un mapa de clases para sus clases más usadas, pero querer usar un autoloader de estilo PSR-0 para bibliotecas de terceros.
Aunque potencialmente podría configurar esto manualmente, puede resultar más útil definir
la configuración del autoloader en algún lugar y almacenarla en caché. Para estos casos,
la AutoloaderFactory resultará útil.
La configuración puede almacenarse como un array de PHP, o en alguna forma de archivo de configuración. Como ejemplo, considere el siguiente array de PHP:
$config = array(
'Zend_Loader_ClassMapAutoloader' => array(
'application' => APPLICATION_PATH . '/autoload_classmap.php',
'zf' => APPLICATION_PATH . '/../library/Zend/autoload_classmap.php',
),
'Zend_Loader_StandardAutoloader' => array(
'namespaces' => array(
'Phly\Mustache' => APPLICATION_PATH . '/../library/Phly/Mustache',
'Doctrine' => APPLICATION_PATH . '/../library/Doctrine',
),
),
);
Una configuración equivalente de estilo INI podría ser como la siguiente:
Zend_Loader_ClassMapAutoloader.application = APPLICATION_PATH "/autoload_classmap.php" Zend_Loader_ClassMapAutoloader.zf = APPLICATION_PATH "/../library/Zend/autoload_classmap.php" Zend_Loader_StandardAutoloader.namespaces.Phly\Mustache = APPLICATION_PATH "/../library/Phly/Mustache" Zend_Loader_StandardAutoloader.namespaces.Doctrine = APPLICATION_PATH "/../library/Doctrine"
Una vez que tenga su configuración en un array de PHP, simplemente pásela a la
AutoloaderFactory.
// This example assumes ZF is on your include_path. // You could also load the factory class from a path relative to the // current script, or via an absolute path. require_once 'Zend_Loader_AutoloaderFactory.php'; Zend_Loader_AutoloaderFactory::factory($config);
La AutoloaderFactory instanciará cada autoloader con las
opciones dadas, y también llamará a su método register() para
registrarlo con el autoloader de SPL.
Opciones de AutoloaderFactory
- $options
-
La
AutoloaderFactoryespera un array asociativo u objetoTraversable. Las claves deben ser nombres de clase de autoloader válidos, y los valores deben ser las opciones que deben pasarse al constructor de la clase.Internamente, la
AutoloaderFactorycomprueba si la clase de autoloader referenciada existe. Si no, usará el StandardAutoloader para intentar cargar la clase mediante elinclude_path(o, en el caso de clases con espacio de nombres "Zend", usando la ruta de la biblioteca de Zend Framework). Si la clase no se encuentra, o no implementa la interfaz SplAutoloader, se lanzará una excepción.
Consulte el Inicio rápido para ver un ejemplo detallado.