ifcanduela / kernel-middleware
HTTP请求和响应的中间件处理器
1.0.0
2022-11-07 12:11 UTC
Requires
- php: ^8.0
- symfony/http-foundation: ^6.1
Requires (Dev)
- phpunit/phpunit: ^9.5
- vimeo/psalm: ^4.29
This package is auto-updated.
Last update: 2024-09-07 16:13:53 UTC
README
一个具有简单中间件实现的请求/响应处理器。
使用内核
ifcanduela\kernel\Kernel
类已准备好由您的自定义类扩展
<?php use Symfony\Component\HttpFoundation\Request; use Symfony\Component\HttpFoundation\Response; class App extends \ifcanduela\kernel\Kernel { public function __construct(array $middleware) { $middleware[] = $this->run(...); parent::__construct($middleware) } public function run(Request $request, Closure $next): Response { return new Response("hello"); } }
使用中间件
中间件必须是可调用的或实现\ifcanduela\kernel\Middleware
。可调用对象的预期签名如下
function (Request $request, Closure $next): Response;
其中Request
和Response
是Symfony HTTP Foundation类,而$next
闭包是一个可选接受请求的函数,并将返回一个响应。
中间件可以返回$next()
或$next($request)
以将控制权传递给链中的下一个中间件并获取一个响应对象。
class ExampleMiddleware implements Middleware { public function handle($request, $next) { return $next(); } }
实现ifcanduela\kernel\Middleware
的中间件
实现此接口的任何对象都是有效的中间件,包括匿名类
new Kernel([ InitSessionMiddleware::class, new InitContainerMiddleware($container) new class implements Middleware { public function handle(Request $request, Closure $next): Response { // ... } } ])
使用可调用的中间件
实现__invoke()
的函数和对象是可接受的中间件。
new Kernel([ new class { public function __invoke($req, $next) { return $next(); } }, fn ($req, $next) => new JsonResponse([]), ])