2012-03-30 3 views
2

私は、他のアプリケーションと共有されている2つの既存のデータベースを使用する1つのレポートプロジェクトにzendフレームワークを使用しています。zendモデルに複数の名前空間を使用することはできますか?どのように自動ロードしますか?

私はzend multi dbを使用してこれらのデータベースに接続しています。

私の質問は、モデルに複数の名前空間を使用できるかどうかです。両方のデータベースに同じ名前のテーブルが含まれているためです。または、このようなシナリオを処理するためのベストプラクティスは何ですか。

iは

$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_' 
                ) 
              ), 
             )); 

誰かがベストプラクティスであるものを私に言うことができる、のような何かを試すことができます。

答えて

2

私はこのような状況で、あなたの最善の策は、あなたがアプリケーションに類似した構造を使用して、ライブラリに必要な任意のファイルを追加することができますapplication.ini

autoloaderNamespaces[] = DBFIRST_ 
autoloaderNamespaces[] = DBSECOND_ 

にそれぞれの名前空間を追加することだと思います。

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

私はそれがあなたが示唆している方法で行うことができると確信しています、私はそれが問題の価値があるのか​​分かりません。 DbTableクラスは、特定のDBアダプタに依存する必要があるため、慎重に扱う必要があるのはDbTableクラスだけです。あなたの実際のモデルやサービスは、どのアダプターがデータベースと通信しているのか、あるいはデータベースが存在しているのかを気にするべきではありません。

関連する問題