0

我有这堂课:

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'");

奇怪的是,如果我将代码从方法移到方法中,它可以正常工作__constructget如下所示:

class template {

    private $_db;

    public function get(){

        $this->_db = \MysqliDb::getInstance();
        return $this->_db->rawQuery("SHOW COLUMNS FROM rank LIKE 'view_template'");
    }
}

在这种情况下有什么问题?

4

1 回答 1

1

我认为

\MysqliDb::getInstance()

; 在调用构造时未返回有效对象,这就是您收到错误的原因。

您可以在调用 get 方法之前检查构造中返回的对象以查看是否返回了有效对象

公共函数 __construct(){ $this->_db = \MysqliDb::getInstance(); var_dump($this->_db); }

于 2017-04-22T16:39:10.213 回答