Можно ли использовать несколько пространств имен для Zend-модели и как я могу это загрузить? - PullRequest
2 голосов
/ 30 марта 2012

Я использую Zend Framework для одного проекта отчетности, который использует две существующие базы данных, совместно используемые с другими приложениями.

Я подключаюсь к этой базе данных, используя 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 Ответ

2 голосов
/ 30 марта 2012

Я думаю, что вам лучше всего в этой ситуации добавить каждое пространство имен к application.ini

autoloaderNamespaces[] = DBFIRST_
autoloaderNamespaces[] = DBSECOND_

, после чего вы можете добавить любой файл в библиотеку, используя аналогичную структуру приложения.

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

Я уверен, что это можно сделать так, как вы предлагаете, я просто не уверен, что это стоит того.Поскольку единственные классы, с которыми вам действительно нужно быть осторожными, это классы DbTable, потому что они должны полагаться на определенный адаптер БД.Ваши действительные модели или службы не должны заботиться о том, какой адаптер взаимодействует с базой данных или даже что база данных существует.

...