应用在对代码进行层层校验,通过array_reduce和匿名函数调用来实现。
<?php
class Pipeline
{
public $method = 'handle';
public $request = 'testData';
public $arr = array('test1', 'test2', 'test3');
public function test()
{
$pipe = array_reduce(
array_reverse($this->arr), $this->carry()
);
$pipe($this->request);
}
protected function carry()
{
return function ($stack, $item) {
return function ($params) use ($stack, $item) {
$paramsArr = [$params, $stack];
return (new $item)->{$this->method}(...$paramsArr);
};
};
}
}