2010-08-13 103 views
6

我有一个新的ZF 1.10项目(只是默认模块 - 不是多个模块),并且必须在“Application_Model_”前缀模型的类名,以便从应用程序/模型目录中选取它们。如何从Zend Framework模型类名称中删除“Application_Model_”前缀?

我该如何对此进行更多的控制?例如,我希望自己命名模型类 - 例如作为“Blah_ClassName”或者甚至只是“ClassName”。 (我知道我可以使用set_include_path()来实现后者,但这不是“Zend-like”,我在想对自动加载器进行某种更改 - 但是最好的方法是什么? )

回答

8

您正在寻找Resource Autoloaders

在你的引导:

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

要加载的资源:

$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

磁带自动加载机工作,你需要做两件事情,路径添加到您的include_path,还可以指定自动加载磁带机的命名空间:

Autoloadernamespaces[] = "YourNamespace_"