tp5 控制器初始化与前置操作

本文介绍了ThinkPHP5框架中控制器的初始化方法和前置操作。控制器初始化方法 `_initialize` 在每个控制器方法调用前自动执行。通过设置 `beforeActionList` 属性,可以指定前置操作方法,该方法将在指定控制器的所有方法执行前运行。如果同时存在初始化方法,_initialize 将先于前置操作执行。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

控制器初始化 

”如果你的控制器类继承了\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函数

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值