2012-08-08 115 views
0

時,我有簡單的線條class autorization extends mysql,它會導致致命錯誤:調用一個成員函數close()一個非對象在...在該行被致命錯誤擴展簡單的類

function __destruct(){ 
     $this->connection->close(); 
    } 

構造

$mysqli = new mysqli(*****); 
$this->connection = $mysqli; 

在沒有其他方法OT類的MySQL不使用

+0

那麼,'$ this-> connection'是什麼? *它是一個對象嗎? – 2012-08-08 07:16:09

+0

似乎,'$ this-> connection'不是一個對象(可能是'null'),但沒有看到,你在哪裏定義它,或者你在它之間做了什麼,沒有人可以告訴你_why_ – KingCrunch 2012-08-08 07:16:27

+0

是的,對不起,忘了構造函數 – user1564141 2012-08-08 07:17:20

回答

1

連接屬性未初始化。如果您在mysql類中有構造函數,請確保您尚未通過在autorization類中指定構造函數完全覆蓋它。

parent::__constructor(any_params_to_mysql_go_here); 

順便說一下,從你的問題不清楚是誰維護的連接屬性:mysql的類或沒有這可以通過添加可以實現嗎?

+0

所有與mysql一起工作的是在擴展的mysql類中。從授權(在第一篇文章中錯過了一個字母)我只是調用方法與參數從數據庫返回的數據。問題是,我認爲當我擴展類構造函數自動創建新的對象與擴展類中的連接,但如現在看到我錯了。 – user1564141 2012-08-08 07:54:12

0

用於測試的那一刻嘗試

function __destruct(){ 
    if (!is_object($this->connection)) { 
     echo ' $this->connection is not an object', "\n"; 
     var_dump($this->connection); 
     die; 
    } 
    if (!method_exists($this->connection, 'close')) { 
     echo '$this->connection has no method close()', "\n"; 
     echo get_class($this->connection), "\n"; 
     die; 
    } 
    $this->connection->close(); 
} 
+0

返回$這 - >連接不是一個對象NULL ...但構造函數創建新的mysqli連接,我只想關閉它。 – user1564141 2012-08-08 07:30:40