2012-03-30 25 views
2

我爲一個使用兩個現有數據庫與其他應用程序共享的報告項目使用zend框架。是否有可能爲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_' 
                ) 
              ), 
             )); 

誰能告訴我什麼是最好的做法。

回答

2

我認爲在這種情況下你最好的選擇將是每個命名空間添加到application.ini

autoloaderNamespaces[] = DBFIRST_ 
autoloaderNamespaces[] = DBSECOND_ 

那麼你可以添加你使用類似的結構應用程序需要庫的任何文件。

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

我敢肯定,這是可以做到你所提出的建議的方式,我只是不知道它是值得的麻煩。由於唯一需要小心的類是DbTable類,因爲這些類需要依賴特定的數據庫適配器。您的實際模型或服務不應該關心哪個適配器與數據庫交談,或者甚至不存在數據庫。

相關問題