欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

laravel中间件的实现原理

程序员文章站 2022-07-11 19:39:14
中间件的实现原理 运用 以及 实现 ......
中间件的实现原理

运用 array_reduce 以及 call_user_func 实现

interface middleware
{
    public static function handle(closure $next);
}

class verfiycsrftoekn implements milldeware{    
    public static function handle(closure $next)    {        
        echo '验证csrf token <br>';        
        $next();    
    }
}

class verfiyauth implements milldeware{
    public static function handle(closure $next)    {        
        echo '验证是否登录 <br>';        
        $next();    
    }
}

class setcookie implements milldeware{    
    public static function handle(closure $next)    {        
        $next();        
        echo '设置cookie信息!';    
    }
}

$handle = function () {    
    echo '当前要执行的程序!';
};

$pipe_arr = [ 'verfiycsrftoekn', 'verfiyauth', 'setcookie', ];

$callback = array_reduce($pipe_arr, function ($stack, $pipe) {
    return function () use ($stack, $pipe) {
        return $pipe::handle($stack);
    };
}, $handle);

call_user_func($callback);