optimus / onion
1.0.0
2017-01-10 03:45 UTC
Requires (Dev)
- mockery/mockery: 0.9.*
- orchestra/testbench: ~3.1
- phpunit/phpunit: ~4.7
- satooshi/php-coveralls: dev-master@dev
This package is not auto-updated.
Last update: 2024-09-14 17:42:56 UTC
README
一个独立的中间件库,无依赖项,灵感来源于Laravel的中间件(Illuminate/Pipeline)。
我写了一篇关于这个库及其使用方法的小博客文章:在PHP中实现before/after中间件
安装
composer require optimus/onion ~1.0
用法
class BeforeLayer implements LayerInterface { public function peel($object, Closure $next) { $object->runs[] = 'before'; return $next($object); } } class AfterLayer implements LayerInterface { public function peel($object, Closure $next) { $response = $next($object); $object->runs[] = 'after'; return $response; } } $object = new StdClass; $object->runs = []; $onion = new Onion; $end = $onion->layer([ new AfterLayer(), new BeforeLayer(), new AfterLayer(), new BeforeLayer() ]) ->peel($object, function($object){ $object->runs[] = 'core'; return $object; }); var_dump($end);
将输出
..object(stdClass)#161 (1) {
["runs"]=>
array(5) {
[0]=>
string(6) "before"
[1]=>
string(6) "before"
[2]=>
string(4) "core"
[3]=>
string(5) "after"
[4]=>
string(5) "after"
}
}