danielspk/ tornadohttp
中间件容器 PSR-15
Requires
- php: >=8.0.0
- psr/container: ^1.0
- psr/http-message: ^1.0
- psr/http-server-handler: ^1.0
- psr/http-server-middleware: ^1.0
Requires (Dev)
- laminas/laminas-diactoros: ^2.6
- laminas/laminas-servicemanager: ^3.6
- phpunit/phpunit: ^9.5
- dev-master
- 4.0.1
- 4.0.0
- 3.2.1
- 3.2.0
- 3.1.1
- 3.1.0
- 3.0.1
- 3.0.0
- 2.1.3
- 2.1.2
- 2.1.1
- 2.1.0
- v2.0.0
- v1.5.2
- v1.5.1
- v1.5.0
- v1.4.1
- v1.4.0
- v1.3.7
- v1.3.6
- v1.3.5
- v1.3.4
- v1.3.3
- v1.3.2
- v1.3.1
- v1.3.0
- v1.2.0
- v1.1.1
- v1.1.0
- v1.0.1
- v1.0.0
- v0.3.0
- v0.2.1
- v0.2.0
- dev-dependabot/composer/laminas/laminas-diactoros-2.18.1
- dev-develop
This package is auto-updated.
Last update: 2024-09-25 02:02:27 UTC
README
TORNADO HTTP 是一个 PSR-15 中间件处理程序 PSR-15
文档
以下文档将向您展示如何使用 Tornado Http。
安装
建议通过以下方式使用 Composer 安装此库:
php composer.phar require danielspk/tornadohttp:~4.0
这将安装 Tornado HTTP 并更新 composer.json
文件,添加以下依赖项:
{
"require": {
"danielspk/tornadohttp": "~4.0"
}
}
创建应用程序容器
Tornado Http 可以以多种方式构建:
无参数
$app = new \DMS\TornadoHttp\TornadoHttp();
带有中间件队列
$app = new \DMS\TornadoHttp\TornadoHttp( [ ['middleware' => (new MiddlewareClass)], ['middleware' => $middlewareOne], ['middleware' => 'ServiceMiddlewareTwo'], ['middleware' => 'App\MiddlewareThree', 'path' => '/admin'], ['middleware' => ['App\MiddlewareFour', [$paramOne, $paramTwo]]], ] );
注意:您可以看到有四种注册中间件的方式:a) MiddlewareInterface 实例,b) 包含在容器中的服务的字符串引用,c) 命名空间字符串引用类,d) 类字符串引用和构造函数参数数组。稍后将详细介绍每种方式。
带有默认响应
$app = new DMS\TornadoHttp\TornadoHttp( [], new DefaultResponse() );
带有服务容器
$app = new DMS\TornadoHttp\TornadoHttp( [], new DefaultResponse(), new Container() );
注意:要使用的服务容器必须遵循 PSR-11 标准。
带有自定义中间件解析器
$resolver = class () implements ResolverInterface { public function solve($middleware) : MiddlewareInterface { // ... }; }; $app = new DMS\TornadoHttp\TornadoHttp( [], new DefaultResponse(), new Container(), new $resolver() );
带有执行环境
$app = new DMS\TornadoHttp\TornadoHttp( [], new DefaultResponse(), new Container(), null, 'development' );
中间件队列
Tornado Http 支持三种不同的方式来注册中间件:
- 通过其
constructor
- 通过
add()
方法 - 通过
addList()
方法
示例
// mediante el constructor $app = new DMS\TornadoHttp\TornadoHttp( [ ['middleware' => (new MiddlewareClass)], ] );
// mediante el método add() $app->add('ServiceMiddleware', '/', ['GET', 'POST'], ['dev', 'prod'], 0);
// mediante el método addList() $app->addList([ ['middleware' => (new MiddlewareClass)], ['middleware' => 'ServiceMiddleware'], ]);
Tornado Http 提供了一个可以自动解析注册中间件执行的类。
使用其解析器,Tornado Http 默认有四种注册中间件的方式:
- 通过
类实例
- 通过
字符串
引用容器中的服务 - 通过
字符串
引用类的命名空间 - 通过
数组
所有中间件都必须实现 \Psr\Http\Server\MiddlewareInterface
。
示例
// mediante una instancia de clase $app->add(new MiddlewareClass); // mediante un string de referencia a un servicio del contenedor $app->add('ServiceMiddleware'); // mediante un string de referencia a un namespace de clase $app->add(App\MiddlewareClass::class); // mediante un string de referencia a un namespace de clase y parámetros de constructor $app->add([App\MiddlewareClass::class, [$param1, $param2]]);
每个中间件都可以使用以下可选执行过滤器进行注册
- 允许的 HTTP 方法
- URL 路径
- 允许的执行环境
示例
// mediante el constructor $app = new DMS\TornadoHttp\TornadoHttp( [ [ 'middleware' => (new MiddlewareTimeExecutionClass), 'path' => '/admin', 'env' => ['develop'], ], [ 'middleware' => (new MiddlewareLogClass), 'methods' => ['POST', 'PUT'], 'env' => ['production', 'develop'], ], ] );
容器特性
Tornado Http 提供了一个可以在中间件中使用的 trait。
当 Tornado Http 检测到中间件使用 Container\ContainerTrait
时,会自动注入在 Tornado Http 中注册的服务容器。
您可以在中间件中以下方式访问服务容器:
class ExampleMiddleware implements \Psr\Http\Server\MiddlewareInterface { use \DMS\TornadoHttp\Container\ContainerTrait; public function getViewEngine() { return $this->getContainer()->get('view_engine'); } // ... }
自定义解析器
Tornado Http 允许注册自定义中间件解析器。这样,您可以替换或扩展前面提到的四种注册中间件的方式。
示例
class CustomResolver implements ResolverInterface { public function solve(string $middlewareClass) : MiddlewareInterface { return new $middlewareClass(); } } $app = new DMS\TornadoHttp\TornadoHttp(); $app->setResolver(new CustomResolver());
接口/特质/类和方法摘要
DMS\TornadoHttp\TornadoHttp
DMS\TornadoHttp\Container\ContainerTrait
DMS\TornadoHttp\Container\InjectContainerInterface
DMS\TornadoHttp\Middleware\Middleware
DMS\TornadoHttp\Resolver\Resolver
DMS\TornadoHttp\Resolver\ResolverInterface
灵感来源
许可证
本项目基于 MIT 许可证分发。
建议和合作
Daniel Spiridione - http://daniel-spiridione.com.ar