0

単純な行がclass autorization extends mysqlあり、致命的なエラーが発生します:の非オブジェクトでメンバー関数close()を呼び出す...その行には

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

コンストラクタ

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

現時点では、クラスmysqlの他のメソッドは使用されていません

4

2 に答える 2

1

接続プロパティは初期化されていません。クラスにコンストラクターがある場合は、mysqlクラスにコンストラクターを指定して、完全に上書きされていないことを確認してくださいautorization。これは、以下を追加することで実現できます。

parent::__constructor( any_params_to_mysql_go_here );

ところで、あなたの質問から、誰が接続プロパティを維持しているのかが明確ではありません:mysqlクラスかどうか?

于 2012-08-08T07:43:32.203 に答える
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();
}
于 2012-08-08T07:26:37.033 に答える