Zend_Db: Адаптер внезапно имеет значение null!

Я использую Zend_Db в одном из моих проектов. Теперь у меня возникла проблема, что внезапно во время выполнения кода переменная $ _db в Zend_Db_Adapter_Abstract имеет значение NULL. (показано var_dump ($ this), в моем классе DbTable_xx).

Кажется, что адаптер установлен на нуль где-то во время выполнения скрипта. Как это может произойти?

К сожалению, проект слишком сложный, чтобы разместить здесь некоторый код … Я получаю эту ошибку (при выполнении метода find ($ primary) на 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 

Solutions Collecting From Web of "Zend_Db: Адаптер внезапно имеет значение null!"

Вероятно, вы забыли установить адаптер Db для вашего класса 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 Framework и добавить некоторый код трассировщика к тем методам, которые могут устанавливать $ _db, используя встроенные функции отладки php, такие как:

  • debug_backtrace ()
  • debug_print_backtrace ()

чтобы узнать, что происходит. Afer все, это open-soure!