dssqq82402 2017-04-22 16:17
浏览 253

php构造函数似乎不起作用

I have this class:

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

But, when I execute the method get, I get this error message:

Fatal error:  Call to a member function rawQuery() on a non-object in {dir/to/my/file} on line 50

Line 50 is return $this->_db->rawQuery("SHOW COLUMNS FROM rank LIKE 'view_template'");

The weird thing is that it works fine if I move the code from __construct to the get method, like this:

class template {

    private $_db;

    public function get(){

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

What can be wrong in this case?

  • 写回答

1条回答 默认 最新

  • dtest84004 2017-04-22 16:39
    关注

    I think

    \MysqliDb::getInstance()

    ; isn't returning a valid object at the time when the construct is called, this is why you are getting the error.

    You could check the object returned in the construct to see if a valid object is returned before calling the get method

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

    评论

报告相同问题?

悬赏问题

  • ¥15 随身WiFi网络灯亮但是没有网络,如何解决?
  • ¥15 gdf格式的脑电数据如何处理matlab
  • ¥20 重新写的代码替换了之后运行hbuliderx就这样了
  • ¥100 监控抖音用户作品更新可以微信公众号提醒
  • ¥15 UE5 如何可以不渲染HDRIBackdrop背景
  • ¥70 2048小游戏毕设项目
  • ¥20 mysql架构,按照姓名分表
  • ¥15 MATLAB实现区间[a,b]上的Gauss-Legendre积分
  • ¥15 delphi webbrowser组件网页下拉菜单自动选择问题
  • ¥15 linux驱动,linux应用,多线程