stack / builder
此包已被废弃,不再维护。没有建议的替代包。
基于HttpKernelInterface的stack中间件构建器。
v1.0.6
2020-01-30 12:17 UTC
Requires
- php: >=7.2.0
- symfony/http-foundation: ~2.1|~3.0|~4.0|~5.0
- symfony/http-kernel: ~2.1|~3.0|~4.0|~5.0
Requires (Dev)
- phpunit/phpunit: ~8.0
- symfony/routing: ^5.0
This package is not auto-updated.
Last update: 2024-08-09 13:33:01 UTC
README
基于HttpKernelInterface的stack中间件构建器。
Stack/Builder是一个小型库,它帮助您构建一个嵌套的HttpKernelInterface装饰器树。它将其建模为一个中间件栈。
示例
如果您想用session和cache中间件装饰一个silex应用程序,您将不得不这样做
use Symfony\Component\HttpKernel\HttpCache\Store; $app = new Silex\Application(); $app->get('/', function () { return 'Hello World!'; }); $app = new Stack\Session( new Symfony\Component\HttpKernel\HttpCache\HttpCache( $app, new Store(__DIR__.'/cache') ) );
这确实会变得相当令人厌烦。Stack/Builder简化了这一点
$stack = (new Stack\Builder()) ->push('Stack\Session') ->push('Symfony\Component\HttpKernel\HttpCache\HttpCache', new Store(__DIR__.'/cache')); $app = $stack->resolve($app);
正如您所看到的,通过将层排列成一个栈,它们就变得容易多了。
在前端控制器中,您需要处理请求
use Symfony\Component\HttpFoundation\Request; $request = Request::createFromGlobals(); $response = $app->handle($request)->send(); $app->terminate($request, $response);
Stack/Builder还支持将一个callable
推入栈中,对于可能更复杂的中间件实例化情况。这个callable
应该接受一个HttpKernelInterface
作为第一个参数,并返回一个HttpKernelInterface
。上面的例子可以重写为
$stack = (new Stack\Builder()) ->push('Stack\Session') ->push(function ($app) { $cache = new HttpCache($app, new Store(__DIR__.'/cache')); return $cache; }) ;