2009-09-29 2 views
1

내 프로젝트 중 하나에서 Zend_Db를 사용하고 있습니다. 이제 코드가 갑자기 실행되는 동안 Zend_Db_Adapter_Abstract의 변수 $ _db가 null입니다. (내 DbTable_xx 클래스의 var_dump ($ this)로 표시).Zend_Db : 어댑터가 갑자기 null입니다!

어댑터가 스크립트 실행 중 어딘가에 설정된 것처럼 보입니다. 어떻게 그럴 수 있습니까?

불행히도 프로젝트 (찾기 ($ 차) 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 
+0

아, 변경 가능한 객체의 기쁨 : –

+0

당신이 그것을 프레임 워크의 자신의 사용 중 또는 프레임 워크 코드에 오히려 생각 하는가를 참조하십시오 BLE 또는 기본으로 설정 ? – markus

답변

0

글쎄, 그건 너무 아니다 많은 정보. 당신이 추측 피하고 싶은 경우에, 나는 젠드 프레임 워크의 복사본을 만들 제안 및 PHP의를 사용하여 $ _db을 설정하는 방법에 약간의 추적 코드를 추가 할 것입니다 내장과 같은 디버그 기능 :

  • debug_print_backtrace()
  • 는 무슨 일이 일어나고 있는지 알아보십시오. 모두, 그것은 오픈 soure이야!

    +0

    프레임 워크를 복사 할 필요가 없으며 관련 클래스와 메서드를 확장하면됩니다. – markus

    1

    아마도 Zend_Db_Table 클래스에 Db 어댑터를 설정하는 것을 잊어 버렸을 것입니다.

    당신은 적어도 세 가지 방법으로이 작업을 수행 할 수 있습니다

    :

    Zend_Db_Table_Abstract::setDefaultAdapter($db); 
    
  • 테이블 생성자에 어댑터를 지정합니다

    • 모든 테이블에 대한 응용 프로그램 전체의 기본 설정

      $table = new MyTable(array('db'=>$db)); 
      
    • 어댑터를 레지스트리에 저장하고 ta에 지정하십시오

      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