我在我的项目之一使用Zend_Db的。 现在我有这个问题,突然在执行代码,在一个Zend_Db_Adapter_Abstract变量$ _db为空。 (由后续代码var_dump($这个)所示;在我DbTable_xx类)。
这似乎是适配器设置脚本执行过程中的某个地方空。 如何发生的呢?
不幸的是,项目太复杂,在这里发布一些代码...我得到这个错误(同时在执行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
你可能忘了设置数据库适配器为您的Zend_Db_Table类类。
您可以在至少在三个方面做到这一点:
设置所有表的应用程序范围默认:
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
好吧,这不是太多的信息。 如果你想避免猜测,我建议做Zend框架的一个副本,并添加一些代码,追踪那些可以使用设置$ _db方法PHP的内置调试功能,如:
- debug_backtrace()
- debug_print_backtrace()
找出发生了什么事情。 AFER所有,它是开放的,索里!