Zend从同一目录中自动加载不同的命名空间?

时间:2010-12-22 21:34:39

标签: php zend-framework namespaces autoload bootstrapping

我的项目中有一个模型目录,我想用不同的命名空间保存/ files类。 例如:

models/User.php with classname Model_User
models/Table_User.php with classname Model_Table_User

对于第一个命名空间,我在bootstrap.php中有这个

$resourceLoader->addResourceTypes(array(
    'model' => array(
    'namespace' => 'Model',
    'path' => 'models'
    )
));

我无法弄清楚如何添加第二个命名空间,以便检测以Table_开头的文件有什么想法吗?

现在我已经添加了一个名为'tables'的第二个目录,但它变得令人困惑,因为我有两个模型名称两次(一次在模型diretory中,一次在tables目录中)

2 个答案:

答案 0 :(得分:1)

因为Table_User中的_。自动加载器可能正在寻找:

models/Table/User.php

尝试将文件重命名为

TableUser.php

课程:

Model_TableUser

或者创建Table文件夹并将User.php放在那里。

答案 1 :(得分:0)

这是我自己做的事情 我将“Model_”放在'{APPLICATION_PATH} / models /'和“DbTable_”中,坐在'{APPLICATION_PATH} / models / dbtables /'中。


$resourceLoader->addResourceTypes(array(
    'model' => array(
    'namespace' => 'Model_',
    'path' => APPLICATION_PATH.'/models/'
    ),
    'dbtable' => array(
    'namespace' => 'DbTable_',
    'path' => APPLICATION_PATH.'/models/dbtables/'
));

您当然应该根据您的类名和文件夹结构修改它。 APPLICATION_PATH在index.php中定义 - 但我不记得它是否包含尾部斜杠,因此请检查以防万一。 (我现在不在我的电脑上所以我无法检查......)

简单就是这样! :)