noglitchyo / symfony-middleware-bundle
将 PSR-15 中间件集合调度器引入到 Symfony。
Requires
- php: >=7.3
- noglitchyo/middleware-collection-request-handler: *
- psr/http-server-middleware: ^1.0.0
- symfony/config: ^4.3
- symfony/dependency-injection: ^4.3
- symfony/event-dispatcher: ^4.3
- symfony/http-foundation: ^3.4 || ^4.0
- symfony/http-kernel: ^4.3
- symfony/psr-http-message-bridge: ^1.2
Requires (Dev)
- nyholm/psr7: ^1.1
- phpstan/phpstan: ^0.11.8
- phpunit/phpunit: ^8.1
- squizlabs/php_codesniffer: *
This package is auto-updated.
Last update: 2024-09-15 21:46:46 UTC
README
将 PSR-15 中间件支持引入到 Symfony 框架。
路线图
- 完整的测试覆盖率
- 文档
此包正在积极开发中,不建议在生产环境中使用。请随时贡献!
描述
Symfony 中间件包为 Symfony 应用程序提供对 PSR-15 中间件执行的支持。它以非侵入的方式引入中间件调度器,因此可以使用最小和最简单的配置。
此包试图提供两种实现,因此可以以不同的方式使用
-
通过连接到 HttpKernel 事件的监听器。如果没有中间件创建响应,它将在将请求传递给控制器之前执行中间件集合。
-
作为 MiddlewareStackKernel 的 HttpKernel 装饰器。
入门
要求
- Symfony 4
- PHP 7.3
安装
使用 Symfony Flex 的应用程序
打开命令行控制台,进入您的项目目录,然后执行
$ composer require noglitchyo/symfony-middleware-bundle
未使用 Symfony Flex 的应用程序
步骤 1:下载 Bundle
打开命令行控制台,进入您的项目目录,并执行以下命令以下载此包的最新稳定版本
$ composer require noglitchyo/symfony-middleware-bundle
此命令需要您全局安装 Composer,如 Composer 文档中的安装章节
所述。
步骤 2:启用 Bundle
然后,通过将其添加到项目 config/bundles.php
文件中注册的包列表来启用该包。
// config/bundles.php return [ // ... NoGlitchYo\MiddlewareBundle\NoGlitchYoMiddlewareBundle::class => ['all' => true], ];
用法
步骤 1:创建中间件集合
首先,需要定义一个中间件集合。中间件集合将包含要执行的所有中间件。
为此,此包依赖于来自 noglitchyo/middleware-collection-request-handler 的中间件集合实现,它允许以单个 PSR-15 中间件或请求处理器的形式执行中间件集合,并具有不同的执行策略。
示例
services.yaml
# Let's define some middlewares that we want to use. App\Middleware\SecurityMiddleware: ~ App\Middleware\CorsMiddleware: ~ App\Middleware\RouterMiddleware: ~* # Then, we define the middleware middleware_collections.default: class: NoGlitchYo\MiddlewareCollectionRequestHandler\Collection\MiddlewareCollectionInterface # Define the middleware collection class which MUST implement MiddlewareCollectionInterface. # Some default implementations are provided. Choose one of them or create your own. # NoGlitchYo\MiddlewareCollectionRequestHandler\Collection\ArrayStackMiddlewareCollection # NoGlitchYo\MiddlewareCollectionRequestHandler\Collection\SplQueueMiddlewareCollection # NoGlitchYo\MiddlewareCollectionRequestHandler\Collection\SplStackMiddlewareCollection arguments: - ['@App\Middleware\EncoderMiddleware', '@App\Middleware\RouterMiddleware', '@App\Middleware\EncoderMiddleware'] tags: ['middlewares.collection'] # Tag it! So the collection can be picked up.
步骤 2:定义中间件处理器
处理器为执行附加的中间件集合提供指令。一旦定义,中间件集合将在每个传入请求上执行。
可以在处理器应运行时定义一些条件
- 路由路径匹配:如果请求的路由路径与给定的路由路径匹配
- 路由名称匹配:如果请求的路由名称与给定的路由名称匹配
示例
middlewares.yaml
middlewares: handlers: default: # Name of your handler configuration collection: default.middleware_collection # should be the collection class name / service name defined in services.yaml condition: # Condition is optional, if not provided the collection will be executed for every requests routePath: '/path/test/1' routeName: 'myCustomRouteName'
测试
想要运行测试套件?请继续
composer test
参考
https://www.php-fig.org/psr/psr-15/
许可
此项目受 MIT 许可证的许可 - 有关详细信息,请参阅LICENSE.md 文件。