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

我如何才能对此进行更多控制?例如,我希望自己为模型类命名空间-例如作为“Blah_ClassName”,甚至可能只是“ClassName”。

(我知道我可以使用set_include_path()来实现后者,但这不是非常“像Zend一样的”。我在想对自动装带器进行某种更改-但是最好的方法是什么?)

最佳答案

您正在寻找Resource Autoloaders

在您的 bootstrap 中:

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

10-07 12:33