在用ThinkPHP开发过程中,经常会创建一个CommonController的控制器来作为基类,而不是Controller直接作为基类,因为我们我可以灵活的在CommonController中添加一些设置,来让所有的子类都有这个属性和这方法,比如

我们可以在CommonController中的构造函数中__construct定义页面的编码方式,这样其他的控制器类在使用的时候也会使用定义的编码。

但是有时候我们在子类的控制器中写一些方法比如$this->assign('version’,'12');会提示不存在的方法,明明this就是类本身,怎么会不存在assign这个方法了呢,原来,我们在构造函数的写法中,需要子类继承父类的构造函数才能正确使用。

class CommonController extends Controller
{
    public function __construct()
    {
       header("Content-type: text/html; charset=utf-8"); 
    }
}

class NewsController extends CommonController
{
    public function __construct()
    {
        //不写这句就会报错
        parent::construct();
        
    }
}

Comments are closed.