网站

thinkphp5 beforeActionList 前置操作 以及不执行的处理方法

分类 :thinkphp5     2019-07-02 人气:0 0条评论

发我们想操作某个方法前必须先运行另一个方法时,便可以使用前置操作

beforeActionList属性

包含哪些方法使用前置操作,哪些方法不使用前置操作两种属性

哪些方法使用前置操作

['only' => '方法名,方法名']

哪些方法不使用前置操作

['except' => '方法名,方法名']

例子

下面的例子中,我们运行second时,会先运行first方法
class Address extends Controller
{
    protected $beforeActionList = [
        'first' => ['only' => 'second']
    ];

    protected function first()
    {
        echo 'first---';
    }

    public function second()
    {
        echo 'second';
    }
  • 当我们访问scond方法时
  • http://127.0.0.1/v1/second
会输出
first---second

 

多个方法共用一个方法时的设置

如果我们有多个方法运行前都需要进行同一个方法的前置操作,则可以用下面的方法进行设置
 

class Address extends Controller
{
    protected $beforeActionList = [
        'first' => ['only' => 'second,third']
    ];

    protected function first()
    {
        echo 'first---';
    }

    public function second()
    {
        echo 'second';
    }

    public function third()
    {
        echo 'third';
    }
经过上面对secondthird设置后,我们访问更好面两个地址
  • http://127.0.0.1/v1/second
  • http://127.0.0.1/v1/third
分别输出
first---second
first---third

数组名不能有大写,否则不执行

数组里的方法名不可以有大写字母,必须全部小写。方法定义的时候无所谓,可以用驼峰或者首字母大写等等。
protected $beforeActionList = [
        'first' => ['only' => 'second']
    ];
假设我们定义了
public function Second
那么使用时不能用['only' => 'Second'],只能使用小写second才可以,真是毛线呀。

评论

大侠名号:   验证暗号: 点击我更换图片

继续阅读