stack / inline
内联堆栈中间件。
dev-master / 1.0.x-dev
2013-04-09 15:57 UTC
Requires
- php: >=5.4.0
- symfony/http-foundation: ~2.1
- symfony/http-kernel: ~2.1
Requires (Dev)
- silex/silex: ~1.0@dev
- stack/builder: ~1.0@dev
- stack/callable-http-kernel: ~1.0@dev
This package is not auto-updated.
Last update: 2024-09-14 13:47:38 UTC
README
内联堆栈中间件。
启用将可调用对象用作堆栈中间件的使用。
示例
以下是一个虚构的示例,说明如何使用可调用对象轻松地将silex应用程序作为堆栈中间件使用。
use Symfony\Component\HttpFoundation\Request;
use Symfony\Component\HttpFoundation\Response;
use Symfony\Component\HttpKernel\HttpKernelInterface;
$app = new Silex\Application();
$app->get('/', function (Request $request) {
if ('success' === $request->attributes->get('callable_middleware')) {
return new Response('SUCCESS');
}
return new Response('FAILED', 500);
});
$inlineMiddleware = function(
HttpKernelInterface $app,
Request $request,
$type = HttpKernelInterface::MASTER_REQUEST,
$catch = true
) {
$request->attributes->set('callable_middleware', 'success');
$response = $app->handle($request, $type, $catch);
$response->setContent('['.$response->getContent().']');
return $response;
};
$stack = (new Stack\Builder())
->push('Stack\Inline', $inlineMiddleware);
$app = $stack->resolve($app);
用法
可调用方法的签名类似于 HttpKernelInterface::handle
,但需要一个 HttpKernelInterface
实例作为其第一个参数。一个简单的中继内联中间件可能看起来像这样
$app = new Stack\Inline($app, function(
HttpKernelInterface $app,
Request $request,
$type = HttpKernelInterface::MASTER_REQUEST,
$catch = true
) {
return $app->handle($request, $type, $catch);
});