nulastudio / middleware
该软件包的规范存储库似乎已不存在,因此该软件包已被冻结。
v1.2.2-BETA
2018-07-23 08:17 UTC
Requires
- php: >=5.6
This package is auto-updated.
Last update: 2023-01-05 15:43:30 UTC
README
send() --------------------> to() --------------------> finish()
^ ^ ^ ^ ^ ^
| | | | | |
| | +------- through(Fn) ------+ | |
| +----------- ... ----------+ |
+--------------- through(F1) --------------+
安装
composer require nulastudio/middleware
使用方法
$middleware = new nulastudio\Middleware; $pack = $middleware->send(1, 2, 3)->to(function (...$goods) { echo "goods received\n"; foreach ($goods as &$good) { $good++; } return $goods; })->through([function ($next, ...$params) { echo "before middleware 1\n"; $return = $next(...$params); echo "after middleware 1\n"; return $return; }, function ($next, ...$params) { echo "before middleware 2\n"; $return = $next(...$params); echo "after middleware 2\n"; return $return; }])->through(function ($next, ...$params) { echo "before middleware 3\n"; $return = $next(...$params); echo "after middleware 3\n"; return $return; })->finish(function ($origin, $goods) { var_dump($origin, $goods); return $goods; })->pack(); $return = $pack(); echo "final return\n"; var_dump($return); /* outputs */ /* before middleware 1 before middleware 2 before middleware 3 goods received after middleware 3 after middleware 2 after middleware 1 array(3) { [0]=> int(1) [1]=> int(2) [2]=> int(3) } array(3) { [0]=> int(2) [1]=> int(3) [2]=> int(4) } final return array(3) { [0]=> int(2) [1]=> int(3) [2]=> int(4) } */
可覆盖参数
$middleware = new nulastudio\Middleware; $pack = $middleware->send()->to(function (...$goods) { var_dump($goods); return $goods; })->pack(); $return = $pack(1,2,3); // or $pack = $middleware->send(4,5,6)->to(function (...$goods) { var_dump($goods); return $goods; })->pack(); $return = $pack(1,2,3); // output: // 1,2,3
参考
- Middleware
newInstance静态方法,返回一个新的 Middleware 实例。 - Middleware
send(...$goods)goods将传递给$destination。
- Middleware
to(callable $destination)destination接收两个参数 ($next, $params) 并必须返回新值或$params。$next是下一个中间件回调,$params是前一个中间件回调返回的值,第一个中间件回调将获得传递给send的值。
- Middleware
reset清空所有中间件。 - Middleware
through($anywhere, bool $reset = false) - Middleware
through($anywhere, string $name) - Middleware
through($anywhere, string $name, bool $reset = false) - Middleware
through($anywhere, bool $reset = false, string $name = null)anywhere一个回调或一组回调。reset在添加回调之前清空通过回调。name中间件名称。
- Middleware
finish(callable $todo)todo完成时做什么。todo获取两个参数 ($origin, $goods) 并必须返回新值或$goods。$origin是传递给send的值,$goods是传递给to的可调用的返回值。
- callable
pack()- 将中间件打包成一个可调用的函数。