控制器初始化
”如果你的控制器类继承了\think\Controller类的话,可以定义控制器初始化方法_initialize,在该控制器的方法调用前首先执行。”
namespace app\index\controller;
use think\Controller;
class Index extends Controller{
public function _initialize(){
echo 'hello'."\n";
}
public function world(){
return 'world';
}
public function bye(){
return 'bye';
}
访问world方法,会显示:hello world
访问bye方法,显示:hello bye
前置操作
“设置beforeActionList属性可以指定某个方法为其他方法的前置操作,数组键名为需要调用的前置方法名,无值为当前控制器下所有方法的前置方法”
namespace app\index\controller;
use think\Controller;
class Index extends Controller{
public function _initialize(){
echo 'zarm'."\n";
}
protected $beforeActionList = [
'one',//one是所有方法的前置方法
// 这些方法不适用前置方法
'two' => ['except'=> 'hello'],//two不是hello的前置方法
// 只有这些方法使用前置方法
'three' => ['only'=> 'hello,world']//three只是hello和world的前置方法
];
public function one(){
echo 'one'."\n";
//当使用return返回时,调用下面的函数就不会输出'one'
}
public function two(){
echo 'two'."\n";
}
public function three(){
echo 'three'."\n";
}
public function hello(){
return 'hello'."\n";
//zarm one three hello
}
public function world(){
return 'world'."\n";
//zarm one two three world
}
public function bye(){
return 'bye'."\n";
//zarm one two bye
}
}
若是存在初始化方法,则先执行_initialize函数