我无法在 php.ini 中返回对象。它只发生在我的数据库对象和所有其他工作正常,这里的代码:
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()”错误。它只发生在 db 中,其他对象(如 R 和 MF)在使用 getInstance() 时工作正常;他们都使用相同的代码。
(是的,我首先做 $d = D::getInstance(); 然后 $d->connect(); 在我将它加载到另一个对象之前)