0
点赞
收藏
分享

微信扫一扫

thinkphp报错Call to a member function assign() on null

林肯公园_97cc 2022-03-15 阅读 130

今天在写东西的时候突然报出这个错,找了很久,才发现是构造函数写法的问题。
在这里插入图片描述
因为我在这个页面写了构造函数__construct(),用于获取基本数据。但是忘记了这个页面继承的父类是写了构造函数_initialize()的。

    public function __construct()
    {
        $this->organ = Db::name('organization')->field('id,name')->select();
        $this->area_list = Db::name('area')->select();
    }

__construct() 是PHP自带的构造函数,子类不会自动继承父类的构造函数,会重写。而 _initialize()是ThinkPHP 自己封装的构造函数,是可以自动继承父类的。
解决方法:
第一种,在tp框架下可以使用 _initialize()

  public function  _initialize()
    {
        $this->organ = Db::name('organization')->field('id,name')->select();
        $this->area_list = Db::name('area')->select();
    }

第二种,原生和框架下都可以,使用__construct(),然后继承父类的

  public function __construct()
    {
        parent::__construct();
        $this->organ = Db::name('organization')->field('id,name')->select();
        $this->area_list = Db::name('yycx_area')->select();
    }
举报

相关推荐

0 条评论