1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 |
<?php class Request { public $data = []; public function run($value) { $this->data[] = $value; } } function carry() { return function ($prex,$value) { return function ($request) use ($prex,$value) { $request->run($value); $prex($request); return $request; }; }; } $init = 0; $arr = [1,2,3]; $request = new Request(); $pipeline = array_reduce( array_reverse($arr),carry(), (function ($request) use ($init) { $request->run($init); }) ); $request = $pipeline($request); var_dump($request); |