2011-09-08 73 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

这不是错字,因为我已将代码复制并粘贴到此处,您可以看到适配器的情况在我的代码中是正确的。我已经更新了我的问题,以确认它不是后者(并测试了它)。 –