今天在写东西的时候突然报出这个错,找了很久,才发现是构造函数写法的问题。
因为我在这个页面写了构造函数__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();
}