2011-09-08 16 views
0

如何使用Zend_Db::factory()獲得Zend框架實例Test DbAdapter從Zend_Db :: factory()加載Zend_Test_DbAdapter()

我有以下代碼,但工廠在我的適配器外殼上打印並打破文件路徑。這似乎有點諷刺他們的測試適配器不能被他們自己的工廠加載。我在這裏做錯了什麼?

$config = new Zend_Config(
    array(
     'database' => array(
      'adapter' => 'DbAdapter', 
      'params' => array(
       'adapterNamespace' => 'Zend_Test', 
       'host' => 'localhost', 
       'dbname' => 'mydb', 
       'username' => 'not', 
       'password' => 'needed' 
      ) 
     ) 
    ) 
); 

$db = Zend_Db::factory($config->database); 

我得到以下錯誤:

Zend_Loader::include_once(Zend/Test/Dbadapter.php): failed to open stream: No such file or directory 

更新

上面的代碼是直接複製和粘貼,適配器參數的情況下是正確的: '將對DBAdapter'。這與文件大小寫Zend_Test_DbAdapter匹配。

我更改了我的代碼以手動實例化Zend_Test_DbAdapter,它自動加載沒有問題。

$db = new Zend_Test_DbAdapter; 
print_r(get_class($db)); 

輸出:

Zend_Test_DbAdapter 

我仍然相信Zend_Db::factory()方法nerfing我的適配器字符大小寫,上蓋的第一個字符,下外殼的其餘部分。

+0

我無法得到這個工作。由於Zend的適配器採用了惰性連接,爲了測試的目的,我能夠使用'pdo_mysql'適配器並聲明'Zend_Db_Adapter_Abstract'的實例是從我的工廠方法返回的。這足以滿足我的需求,但據我所見,您無法通過Zend_Db :: factory()獲得'Zend_Test_DbAdapter'的實例' –

回答

0

檢查錯字錯

if not 'adapter' => 'Dbadapter', to 'adapter' => 'DbAdapter', 

Zend/Test/Dbadapter.php does not exits 
Zend/Test/DbAdapter.php exits in library 

OR

文件丟失

您必須添加的Zend LIB在INCLUDEPATH或者如果一個Zend項目添加Zend的文件到圖書館

/應用程序 /library 添加Zend文件(從http://framework.zend.com/download下載)

+0

這不是錯字,因爲我已將代碼複製並粘貼到此處,您可以看到適配器的情況在我的代碼中是正確的。我已經更新了我的問題,以確認它不是後者(並測試了它)。 –