如何从Zend Framework模型类名中删除“Application_Model_”前缀?

时间:2010-08-13 11:16:06

标签: zend-framework

我有一个新的ZF 1.10项目(只是默认模块 - 而不是多个模块),并且我必须在模型的类名前加“Application_Model_”,以便从application / models目录中选择它们。

如何更好地控制这个?例如,我希望自己命名模型类 - 例如作为“Blah_ClassName”或者甚至只是“ClassName”。

(我知道我可以使用set_include_path()来实现后者,但这并不是“Zend-like”。我认为需要对自动加载器进行某种改变 - 但这样做的最佳方法是什么?)

2 个答案:

答案 0 :(得分: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 :(得分:1)

要使自动加载器正常工作,您需要做两件事,添加include_path的路径并指定自动加载器命名空间:

Autoloadernamespaces[] = "YourNamespace_"