Laravel 之 Middleware

Larave - Middleware 实现原理

函数基础知识

  • array_reduce — 将回调函数 callback 迭代地作用到 array 数组中的每一个单元中,从而将数组简化为单一的值。
  • call_user_func — 把第一个参数作为回调函数调用
<?php

interface Middleware
{
    public static function handle(Closure $next);
}

class SessionMiddleware implements Middleware
{
    public static function handle(Closure $next)
    {
        echo 'session 配置成功'.PHP_EOL;

        return $next();
    }
}

class CookieMiddleware implements Middleware
{
    public static function handle(Closure $next)
    {
        echo 'cookie 配置成功'.PHP_EOL;

        return $next();
    }
}

class ConfigMiddleWare implements Middleware
{
    public static function handle(Closure $next)
    {
        echo 'config 配置成功'.PHP_EOL;

        return $next();
    }
}

//方式一
function run(){
    ConfigMiddleWare::handle(function(){
        SessionMiddleware::handle(function (){
            $handle = function (){
                echo '程序进行中';
            };

            CookieMiddleware::handle($handle);
        });
    });
}

run();


//方式二
$handle = function (){
    echo '程序进行中';
};

$middlewareGroup = [
    'SessionMiddleware',
    'CookieMiddleware',
    'ConfigMiddleWare'
];

$callback = array_reduce($middlewareGroup,function ($carry,$item){
    return function () use ($carry,$item){
        return $item::handle($carry);
    };
},$handle);

call_user_func($callback);


原文地址:https://www.cnblogs.com/ywjcqq/p/14859984.html