Zend_Db: Adaptör aniden null!

2 Cevap php

I'm using Zend_Db in one of my projects. Now I have the problem, that suddenly during the code execution, the variable $_db in Zend_Db_Adapter_Abstract is null. (shown by var_dump($this); in my DbTable_xx class).

It seems like the adapter is set to null somewhere during the script execution. How can that happen?

Ne yazık ki, proje burada bazı kod göndermek için çok karmaşık (find ($ birincil) Zend_Db_Adapter_Abstract yöntemini yürütülürken) ... Ben bu hatayı alıyorum:

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

2 Cevap

Muhtemelen Zend_Db_Table sınıf için Db adaptörü ayarlamak için unuttum.

En az üç şekilde yapabilirsiniz:

  • Tüm tablolar için bir uygulama çapında varsayılan ayarlayın:

    Zend_Db_Table_Abstract::setDefaultAdapter($db);
    
  • Tablo kurucusuna adaptörü belirtin:

    $table = new MyTable( array('db'=>$db) );
    
  • Kayıt defterinde adaptörü saklayın ve tabloya belirtin veya varsayılan olarak ayarlayın:

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

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

Eh, bu çok fazla bilgi yok. Eğer tahmin kaçınmak istiyorsanız, Zend Framework bir kopyasını yapmak ve php yerleşik hata ayıklama fonksiyonları gibi kullanarak _db $ ayarlayabilirsiniz bu yöntemlerin bazı izleme kodu eklemek için öneririm:

neler öğrenmek için. Afer tüm açık-Soure var!