2009-09-29 65 views
1

我在我的一个项目中使用Zend_Db。 现在我遇到了这个问题,那就是在代码执行过程中,Zend_Db_Adapter_Abstract中的$ _db变量为空。 (由var_dump($ this)显示;在我的DbTable_xx类中)。Zend_Db:适配器突然变为空!

在脚本执行过程中,似乎适配器设置为null。 这怎么会发生?

不幸的是,项目太复杂,在这里发布一些代码...我得到这个错误(同时在执行find($初级)上一个Zend_Db_Adapter_Abstract法):

Fatal error: Call to a member function quoteTableAs() 
on a non-object in xxx/library/Zend/Db/Table/Abstract.php on line 1162 
+0

啊,可变对象的乐趣:) – 2009-09-29 10:18:56

+0

你觉得这是相当自己使用框架的过程中或在框架代码? – markus 2009-09-29 16:41:08

回答

0

嗯,这是不是太很多信息。如果你想避免猜测,我建议做Zend框架的一个副本,并添加一些追踪代码,那些可以使用PHP的设置$ _db方法内置调试功能,如:

,找出发生了什么事情。尽管如此,它是开放的!

+0

无需复制框架,只需扩展相关的类和方法即可。 – markus 2009-09-29 16:40:28

1

您可能忘记为您的Zend_Db_Table类设置Db适配器。

可以在至少在三个方面做到这一点:

  • 设置所有表的应用程序范围默认:

    Zend_Db_Table_Abstract::setDefaultAdapter($db); 
    
  • 指定适配器表的构造函数:

    $table = new MyTable(array('db'=>$db)); 
    
  • 将适配器存储在注册表中并将其指定给ta BLE或将其设置为默认:

    Zend_Registry::set('my_db', $db); 
    $table = new MyTable(array('db'=>'my_db')); 
    // alternatively: 
    Zend_Db_Table_Abstract::setDefaultAdapter('my_db'); 
    

http://framework.zend.com/manual/en/zend.db.table.html#zend.db.table.constructing