是否可以为zend模型使用多个名称空间,我将如何自动加载它?

时间:2012-03-30 02:09:09

标签: zend-framework zend-db

我正在为一个报告项目使用zend框架,该项目使用与其他应用程序共享的两个现有数据库。

我使用zend multi db连接到这些数据库。

我的问题是,是否可以为模型使用多个命名空间。因为我的数据库都包含具有相同名称的表。或者处理这种情况的最佳做法是什么。

我可以尝试一下吗,

$resourceLoader = new Zend_Loader_Autoloader_Resource(array(
                                            'basePath' => APPLICATION_PATH,
                                            'namespace' => '',
                                            'resourceTypes' => array(
                                                'form' => array(
                                                    'path' => 'forms/',
                                                    'namespace' => 'Form_',
                                                    ),
                                                'DBFIRST' => array(
                                                    'path' => 'models/',
                                                    'namespace' => 'Model_'
                                                    ),
            'DBSECOND' => array(
                                                    'path' => 'models/',
                                                    'namespace' => 'Model_'
                                                    )
                                            ),
                                        ));

有人能告诉我什么是最佳做法。

1 个答案:

答案 0 :(得分:2)

我认为在这种情况下,最好的办法是将每个命名空间添加到application.ini

autoloaderNamespaces[] = DBFIRST_
autoloaderNamespaces[] = DBSECOND_

然后您可以使用与应用程序类似的结构将所需的任何文件添加到库中。

/library
    /DBFIRST
        /model
            Table.php //class DBFIRST_Model_Table etc.
    /DBSECOND
        /model
        /form

我确信它可以按照你建议的方式完成,我只是不确定这是值得的。因为您真正需要注意的唯一类是DbTable类,因为这些类需要依赖于特定的db适配器。您的实际模型或服务不应该关心哪个适配器与数据库通信,甚至不关心数据库是否存在。