2010-08-13 12 views
6

Tengo un nuevo proyecto de ZF 1.10 (solo módulo predeterminado - no múltiples módulos) y tengo que ponerle un prefijo a los nombres de clase de mis modelos con "Application_Model_" para que sean recogidos del directorio de aplicaciones/modelos.¿Cómo puedo soltar el prefijo "Application_Model_" de los nombres de clase del modelo de Zend Framework?

¿Cómo puedo tomar más control de esto? Por ejemplo, deseo poner espacio de nombre a las clases de modelo yo mismo, p. como "Blah_ClassName" o tal vez solo como "ClassName".

(Sé que podría usar set_include_path() para lograr esto último pero eso no es muy parecido a "Zend". Estoy pensando que se necesita algún tipo de cambio en el autocargador, pero ¿cuál es la mejor manera de hacerlo?)

Respuesta

8

usted está buscando Resource Autoloaders.

En su archivo de arranque: recursos

protected function _initResourceLoader() 
{ 
    $resourceLoader = new Zend_Loader_Autoloader_Resource(array(
     'namespace' => '', 
     'basePath' => APPLICATION_PATH, 
    )); 
    $resourceLoader->addResourceType('model', 'models/', 'Model'); 
    $resourceLoader->addResourceType('form', 'forms/', 'Form'); 
    $resourceLoader->addResourceType('service', 'services/', 'Service'); 

    return $resourceLoader; 
} 

para cargar:

$form = new Form_Article // loads from APPLICATION_PATH . /forms/Article.php 
$model = new Model_Article // loads from APPLICATION_PATH . /models/Article.php 
$service = new Service_Article // loads from APPLICATION_PATH . /services/Article.php 
1

para el cargador automático de trabajo, que tiene que hacer 2 cosas, añadir la ruta a su include_path y también especificar un espacio de nombres cargador automático:

Autoloadernamespaces[] = "YourNamespace_" 
Cuestiones relacionadas