Zend_Db的:适配器突然为空!(Zend_Db: Adapter suddenly is nul

2019-10-17 17:25发布

我在我的项目之一使用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

Answer 1:

你可能忘了设置数据库适配器为您的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



Answer 2:

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

  • debug_backtrace()
  • debug_print_backtrace()

找出发生了什么事情。 AFER所有,它是开放的,索里!



文章来源: Zend_Db: Adapter suddenly is null!