zoukankan      html  css  js  c++  java
  • 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);
    
    
    
  • 相关阅读:
    有关.net 框架的学习笔记
    简单定义工程架构
    respondsToSelector的相关使用
    IOS框架和服务
    iOS常用第三方类库
    ios换肤思想,及工具类
    集成激光推送
    远程推送
    ios本地推送
    UIPopoverController 的使用
  • 原文地址:https://www.cnblogs.com/ywjcqq/p/14859984.html
Copyright © 2011-2022 走看看