caridea/dispatch

一个符合PSR-15规范的中间件调度器的虾

3.0.0 2018-02-11 17:55 UTC

This package is not auto-updated.

Last update: 2024-09-12 21:41:40 UTC


README

Caridea是一个小巧的PHP应用程序库。当您只需要一些帮助之手而不需要一个完整的框架时,就可以使用这个小巧的家伙。

这是它的符合PSR-7PSR-15规范请求处理程序,附带一些中间件实现。

Packagist Build Status Scrutinizer Code Quality Code Coverage Documentation Status

安装

您可以使用Composer安装此库

$ composer require caridea/dispatch
  • 此项目的master分支(版本3.x)需要PHP 7.1,并依赖于psr/http-messagepsr/http-server-handlerpsr/http-server-middleware

兼容性

此库的版本将遵循语义版本化

我们的代码旨在遵守PSR-1PSR-2PSR-4规范。如果您发现与标准兼容性相关的问题,请发送拉取请求!

文档

示例

一些简单的示例。

运行器

您可以使用Runner提供一些中间件,并让它处理您的请求。

$request = new \Zend\Diactoros\ServerRequest();
// I generally use zend-diactoros, but feel free to use whatever PSR-7 library you use

$middleware = [
    // your custom \Psr\Http\Server\MiddlewareInterface objects
];
$runner = new \Caridea\Dispatch\Runner($middleware);
$response = $runner->handle($request);

您的最终中间件应该创建并返回一个PSR-7 ResponseInterface。您也可以将其提供给Runner构造函数,并自动处理它。

$response = new \Zend\Diactoros\Response();
$runner = new \Caridea\Dispatch\Runner($middleware, $response);
$response = $runner->handle($request);

Runner是不可变的。您可以使用它多次。

$runner = new \Caridea\Dispatch\Runner($middleware);
$response1 = $runner->handle($request);
$response2 = $runner->handle($request);

优先级运行器

我们包含了对MiddlewareInterface的扩展:Caridea\Dispatch\Middleware\Prioritized。使用Caridea\Dispatch\PriorityRunner,您可以提供无序的中间件,它们将按优先级顺序调用。

$middleware = [
    // your custom \Psr\Http\Server\MiddlewareInterface objects.
    // Any that implement Prioritized will get run in priority order,
    // Any others get run last, in insert order.
];
$runner = new \Caridea\Dispatch\PriorityRunner($middleware);

您还可以使用Caridea\Dispatch\Middleware\PriorityDelegate类为现有的中间件实现分配优先级。

$middleware = new \Caridea\Dispatch\Middleware\PriorityDelegate($middleware, 123456);

中间件

我们包含的中间件实现。

报告器

使用Caridea\Dispatch\Middleware\Reporter捕获Throwable,记录它们并重新抛出异常。需要PSR-3。

原型

一个简单的中间件,返回您提供的ResponseInterface

另请参阅

  • 这篇博客文章,作者为Matthew Weier O'Phinney,关于为什么PSR-15放弃了使用匿名函数的旧模式的双遍历中间件。