php构造函数似乎不起作用

时间:2017-04-22 16:17:36

标签: php mysqli php-mysqlidb

我有这堂课:

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

在这种情况下可能出现什么问题?

1 个答案:

答案 0 :(得分:1)

我认为

  

\ MysqliDb ::的getInstance()

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

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

  

public function __construct(){$ this-> _db = \ MysqliDb :: getInstance();   var_dump($ this-> _db); }