2010-08-13 6 views
6

J'ai un nouveau projet ZF 1.10 (juste un module par défaut - pas plusieurs modules) et je dois préfixer les noms de classe de mes modèles avec "Application_Model_" afin qu'ils soient récupérés dans le répertoire application/models.Comment puis-je supprimer le préfixe "Application_Model_" des noms de classes du modèle Zend Framework?

Comment puis-je prendre plus de contrôle de ceci? Par exemple, je souhaite classer moi-même les classes de modèles - par ex. comme "Blah_ClassName" ou peut-être même simplement "ClassName".

(Je sais que je pourrais utiliser set_include_path() pour atteindre ce dernier, mais ce n'est pas très "Zend-like" Je pense qu'une sorte de changement de l'autoloader est nécessaire - mais quelle est la meilleure façon de le faire?)

Répondre

8

vous cherchez Resource Autoloaders.

Dans le fichier de démarrage:

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; 
} 

Pour charger des ressources:

$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

pour le chargeur automatique au travail, vous devez faire 2 choses, ajoutez le chemin à votre include_path et également spécifier un espace de noms de chargeur automatique:

Autoloadernamespaces[] = "YourNamespace_" 
Questions connexes