0

PHP で返されるオブジェクトの取得に問題があります。それは私のデータベースオブジェクトでのみ発生し、他のすべては正常に動作します。コードは次のとおりです。

class D {
private static $instance;
private $connected=false,$db,$mf;

public static function getInstance() {
    if (!isset(self::$instance)) {
        self::$instance = new self();
    }
    return self::$instance;
}


public function connect() {
    $mf = MF::getInstance();
    $this->r = R::getInstance();
    if($this->connected == false) {
        $this->db = new PDO('mysql:host='.$this->r->mysql_host.';dbname='.$this->r->mysql_database, $this->r->mysql_username, $this->r->mysql_password);
        if($this->db == true) {
            $this->connected = true;
            $this->db->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);  
        }else{
            $this->mf->report('Unable to connect to database',2);
        }
    }else{
        $this->mf->report('Connection already made.');
    }
}

public function query($sql) {
    try {
        $q = $this->db->query($sql);
    }
    catch(PDOException $e) { 
        trigger_error('<br>Regel: '.$e->getLine().'<br>
            Bestand: '.$e->getFile().'<br>
            Foutmelding: '.$e->getMessage().'<br>SQL: '.$sql,E_USER_ERROR); 
        die();
    } 
    return $q;
}
}

ここで、D::getInstance(); を使用すると、本来あるべきオブジェクトを返しません。query() 関数を実行するとすぐに、「致命的なエラー: 非オブジェクトでメンバー関数 query() を呼び出します」というエラーが表示されます。これはデータベースでのみ発生し、R や MF などの他のオブジェクトは getInstance(); を使用すると正常に動作します。それらはすべて同じコードを使用します。

(そして、はい、最初に $d = D::getInstance(); を実行し、次に $d->connect(); を別のオブジェクトにロードする前に実行します)

4

0 に答える 0