FastD Middleware 是一个实现了 PSR-15 HTTP 服务器中间件标准的轻量级中间件库。它基于 SplStack 实现了灵活的中间件栈管理,支持中间件的链式调用,适用于各种 PHP HTTP 应用程序。
- PHP >= 8.2
- PSR-7 HTTP 消息接口实现
- PSR-15 HTTP 服务器中间件标准
composer require "fastd/middleware" -vvvuseFastD\Middleware\Dispatcher;
useFastD\Middleware\Middleware;
useFastD\Http\Request\ServerRequest;
useFastD\Http\Response\TextasResponse;
// 创建一个中间件类class ExampleMiddleware extends Middleware
{
publicfunctionprocess(ServerRequestInterface$request, RequestHandlerInterface$handler): ResponseInterface
{
// 在请求处理前执行的逻辑$response = $handler->handle($request);
// 在请求处理后执行的逻辑return$response;
}
}
// 创建最终处理器class FinalHandler extends Middleware
{
publicfunctionprocess(ServerRequestInterface$request, RequestHandlerInterface$handler): ResponseInterface
{
return (newResponse())->withContents("Final response");
}
}
// 创建调度器并添加中间件$dispatcher = newDispatcher();
$dispatcher->push(newFinalHandler());
$dispatcher->push(newExampleMiddleware());
// 发起请求$response = $dispatcher->dispatch(newServerRequest('GET', '/'));useFastD\Middleware\Dispatcher;
$dispatcher = newDispatcher();
// 添加中间件到栈顶$dispatcher->push($middleware);
// 从栈顶移除中间件$dispatcher->pop();
// 添加中间件到栈底$dispatcher->unshift($middleware);
// 从栈底移除中间件$dispatcher->shift();
// 执行中间件链$response = $dispatcher->dispatch($serverRequest);FastD Middleware 包含以下核心组件:
- Dispatcher: 负责管理中间件栈,提供 push/pop/unshift/shift 操作方法,并执行中间件链
- Middleware: 抽象中间件基类,实现了 PSR-15 的 MiddlewareInterface 接口
- RequestHandler: 请求处理器,封装回调函数并实现 RequestHandlerInterface 接口
- CallbackMiddleware: 便捷中间件类,允许通过闭包创建中间件
- Dispatcher 使用 SplStack 存储中间件
- 通过递归解析中间件栈构建执行链
- 从栈底开始依次执行中间件
- 每个中间件可选择是否调用后续中间件
- 执行完成后清空中间件栈
创建自定义中间件类:
useFastD\Middleware\Middleware;
usePsr\Http\Message\ServerRequestInterface;
usePsr\Http\Server\RequestHandlerInterface;
usePsr\Http\Message\ResponseInterface;
class CustomMiddleware extends Middleware
{
publicfunctionprocess(ServerRequestInterface$request, RequestHandlerInterface$handler): ResponseInterface
{
// 在请求处理前执行的逻辑// 调用下一个中间件$response = $handler->handle($request);
// 在请求处理后执行的逻辑return$response;
}
}您可以使用 CallbackMiddleware 来快速创建中间件:
useFastD\Middleware\CallbackMiddleware;
$middleware = newCallbackMiddleware(function ($request, $handler) {
// 前置逻辑$response = $handler->handle($request);
// 后置逻辑return$response;
});我们提供了一个示例文件来演示中间件的使用方法:
php example.php该示例展示了:
- 基本中间件使用
- 回调中间件使用
- 中间件栈操作
- 复杂中间件链
- 异常处理
欢迎对项目感兴趣、愿意参与其中的开发者共同打造更好的 PHP 生态。
如果你有兴趣参与开发,可以尝试以下方式:
- 在你的项目中使用,将遇到的问题 反馈。
- 提出更好的建议或功能需求。
MIT License