ThinkPHP5.1 行为与钩子

文件目录

闭包方式调用钩子

\application\pub\controller\Upfile.php

namespace app\pub\controller;
use think\Controller;
use think\facade\Hook;

class Upfile extends Controller
{
    public function index(){
        // 可以不用定义行为直接把闭包函数绑定到某个标签位
        Hook::add('app_init',function(){
            echo '闭包调用';
        });
        hook::listen('app_init');
    }
}

\application\pub\behavior\Upfile.php

namespace app\pub\behavior;

class Upfile
{
    // 行为逻辑
    public function run()
    {
        echo "run 入口";
    }
    //方法名就是钩子名称的驼峰命名(首字母小写)。
    public function appInit()
    {
       echo "初始化";
    }
}

没有 appInt() 方法时,自动调用 run() 方法。

如果存在 appInt() 方法,只调用appInt() 方法,不调用 run() 方法

闭包里的数据最后调用。

闭包传参调用

 \application\pub\controller\Upfile.php

namespace app\pub\controller;

use think\Controller;
use think\facade\Hook;

class Upfile extends Controller
{
    public function index(){
        $params = ['username' => 'liaosp'];
        Hook::add('app_init',function($params){
            echo "<br/>".' 闭包输出参数:'.$params['username'];
        });
        Hook::listen('app_init',$params);
    }
}

 \application\pub\behavior\Upfile.php

namespace app\pub\behavior;

class Upfile
{
    // 行为逻辑
    public function run($params)
    {
         echo "run 入口输出参数: ".$params['username'];
    }
    //方法名就是钩子名称的驼峰命名(首字母小写)。
    public function appInit($params)
    {
        echo '初始化输出参数:'.$params['username'];
    }
}

 

猜你喜欢

转载自www.cnblogs.com/xuey/p/13169189.html