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(); を別のオブジェクトにロードする前に実行します)