我有这堂课:
class template {
private $_db;
public function __construct(){
$this->_db = \MysqliDb::getInstance();
}
public function get(){
return $this->_db->rawQuery("SHOW COLUMNS FROM rank LIKE 'view_template'");
}
}
但是,当我执行方法get
时,我收到此错误消息:
Fatal error: Call to a member function rawQuery() on a non-object in {dir/to/my/file} on line 50
第50行是return $this->_db->rawQuery("SHOW COLUMNS FROM rank LIKE 'view_template'");
奇怪的是,如果我将代码从__construct
移动到get
方法,它会正常工作,如下所示:
class template {
private $_db;
public function get(){
$this->_db = \MysqliDb::getInstance();
return $this->_db->rawQuery("SHOW COLUMNS FROM rank LIKE 'view_template'");
}
}
在这种情况下可能出现什么问题?
答案 0 :(得分:1)
我认为
\ MysqliDb ::的getInstance()
在调用构造时没有返回有效对象,这就是您收到错误的原因。
您可以在调用get方法之前检查构造中返回的对象以查看是否返回了有效对象
public function __construct(){$ this-> _db = \ MysqliDb :: getInstance(); var_dump($ this-> _db); }