Skip to content

Repository files navigation

FastD Middleware

Build StatusSupport PSR15Latest Stable VersionTotal DownloadsLicensecomposer.lock

简介

FastD Middleware 是一个实现了 PSR-15 HTTP 服务器中间件标准的轻量级中间件库。它基于 SplStack 实现了灵活的中间件栈管理,支持中间件的链式调用,适用于各种 PHP HTTP 应用程序。

环境依赖说明

  • PHP >= 8.2
  • PSR-7 HTTP 消息接口实现
  • PSR-15 HTTP 服务器中间件标准

基础使用说明

安装

composer require "fastd/middleware" -vvv

基本用法

useFastD\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 包含以下核心组件:

  1. Dispatcher: 负责管理中间件栈,提供 push/pop/unshift/shift 操作方法,并执行中间件链
  2. Middleware: 抽象中间件基类,实现了 PSR-15 的 MiddlewareInterface 接口
  3. RequestHandler: 请求处理器,封装回调函数并实现 RequestHandlerInterface 接口
  4. CallbackMiddleware: 便捷中间件类,允许通过闭包创建中间件

中间件执行流程

  1. Dispatcher 使用 SplStack 存储中间件
  2. 通过递归解析中间件栈构建执行链
  3. 从栈底开始依次执行中间件
  4. 每个中间件可选择是否调用后续中间件
  5. 执行完成后清空中间件栈

中间件开发

创建自定义中间件类:

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 生态。

如果你有兴趣参与开发,可以尝试以下方式:

  • 在你的项目中使用,将遇到的问题 反馈
  • 提出更好的建议或功能需求。

License

MIT License

About

FastD Middleware

Topics

Resources

Stars

3 stars

Watchers

1 watching

Forks

Releases

Packages

Used by

Contributors

Languages