我在我的一个项目中使用Zend_Db。 现在我遇到了问题,突然在代码执行期间,Zend_Db_Adapter_Abstract中的变量$ _db为null。 (由var_dump($ this)显示;在我的DbTable_xx类中。)
在脚本执行期间,似乎适配器在某处设置为null。 怎么会发生这种情况?
不幸的是,项目太复杂了,无法在这里发布一些代码......我收到此错误(在Zend_Db_Adapter_Abstract上执行find($ primary)方法时):
Fatal error: Call to a member function quoteTableAs()
on a non-object in xxx/library/Zend/Db/Table/Abstract.php on line 1162
答案 0 :(得分:1)
您可能忘记为Zend_Db_Table类设置Db适配器。
您至少可以通过以下三种方式执行此操作:
为所有表设置应用程序范围的默认值:
Zend_Db_Table_Abstract::setDefaultAdapter($db);
指定表构造函数的适配器:
$table = new MyTable( array('db'=>$db) );
将适配器存储在注册表中并将其指定到表中或将其设置为默认值:
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
答案 1 :(得分:0)
嗯,这不是太多的信息。如果你想避免猜测,我建议制作一个Zend Framework的副本,并为那些可以使用php的内置调试函数设置$ _db的方法添加一些跟踪器代码,例如:
了解发生了什么。总而言之,它是开放式的!