美文网首页
pipeline依次传递给下个方法

pipeline依次传递给下个方法

作者: lifefruity | 来源:发表于2020-02-24 13:29 被阅读0次

有一个字符串,依次需要多个机制来过滤,有点类似装饰器的感觉

<?php
interface Middleware{
    public static function handle(Closure $content);
}

class FilterC implements Middleware{
    public static function handle($content){
        $new = str_replace('a', '', $content);
        return $new;
    }
}

class FilterB implements Middleware{
    public static function handle($content){
        $new = str_replace('b', '', $content);
        return $new;
    }
}

class FilterA implements Middleware{
    public static function handle($content){
        $new = str_replace('c', '', $content);
        return $new;
    }
}


function getSlice(){
    return function ($content, $pipe){
        return $pipe::handle($content);
    };
}

function then(){
    $pipes = ['FilterA', 'FilterB', 'FilterC'];
    $pipes = array_reverse($pipes);

    $filterContent = array_reduce($pipes, getSlice(), '12aa3456bb789cc1011');//把a b c都替换掉
    echo $filterContent;// 输出"1234567891011"
}
then();

相关文章

网友评论

      本文标题:pipeline依次传递给下个方法

      本文链接:https://www.haomeiwen.com/subject/vbxvqhtx.html