addResourceType - 如何将Models_Mapper添加为资源?

时间:2011-06-18 13:16:25

标签: php zend-framework php-5.3 zend-autoloader

我正在编写一个PHP应用程序 PHP 5.3和Zend Framework 1.11.7。

我使用以下命令创建了模型资源:

protected function _initLoader() 
{

     $loader = new Zend_Application_Module_Autoloader(array(
        'namespace' => 'Default',
        'basePath'  => APPLICATION_PATH,
    ));

    $loader -> addResourceType ( 'model', 'models', 'Model'); 
}

现在每当我使用以Default_Model_开头的类名时,它就会在models目录中搜索。在models目录下,我有一个名为mapper的目录。

如果每次使用以Default_Model_Mapper_开头的类来自模型/映射器自动加载时,我该怎么配置?

3 个答案:

答案 0 :(得分:1)

ZF应该自动在模型下找到任何目录。此外,您也不需要包含默认模块。

Model_
Model_Mapper_

另外,为了设置ZF模块,我在application.ini文件中有以下两行代码

resources.frontController.moduleDirectory = APPLICATION_PATH "/modules"
resources.modules[] =

以下是我的bootstrap

protected function _initModuleAutoload()
    {
        $modelLoader = new Zend_Application_Module_Autoloader(array(
                'namespace' => '',
                'basePath' => APPLICATION_PATH . '/modules/default'));
         return $modelLoader;
    }

我希望这有一些帮助

亲切的问候

加里

答案 1 :(得分:1)

添加以下内容:

$loader->addResourceType('mapper', 'models/mapper', 'Model_Mapper_');

声明两种资源类型的顺序可能很重要。所以尝试两种方式;其中一个应该工作。

答案 2 :(得分:1)

默认情况下,它在initDefaultResourceTypes中的Zend_Application_Module_Autoloader中设置:

$this->addResourceTypes(array(
            'dbtable' => array(
                'namespace' => 'Model_DbTable',
                'path'      => 'models/DbTable',
            ),
            'mappers' => array(
                'namespace' => 'Model_Mapper',
                'path'      => 'models/mappers',
            ),
            'form'    => array(
                'namespace' => 'Form',
                'path'      => 'forms',
            ),
....