函数基础知识
- 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);