ellipse/dispatcher-container

Psr-15 中间件分发器工厂,从 Psr-11 容器解析类名

1.1.1 2018-03-13 15:15 UTC

This package is auto-updated.

Last update: 2024-08-26 00:00:01 UTC


README

此包为从 ellipse/dispatcher 包实现的 Ellipse\DispatcherFactoryInterface 提供工厂装饰器。它允许使用中间件和请求处理类名来生成 Ellipse\Dispatcher 实例。

要求 php >= 7.0

安装 composer require ellipse/dispatcher-container

运行测试 ./vendor/bin/kahlan

创建一个解析 Psr-15 类名的分发器工厂

此包提供了一个实现 Ellipse\DispatcherFactoryInterfaceEllipse\Dispatcher\ContainerResolver 类,允许装饰实现此接口的任何其他对象。

它接受一个实现 Psr\Container\ContainerInterface 的容器作为第一个参数,以及要装饰的工厂作为第二个参数。

一旦装饰,生成的分发器工厂可以使用中间件的类名 Ellipse\Middleware\ContainerMiddleware(来自 ellipse/middleware-container 包)和请求处理类名 Ellipse\Handlers\ContainerRequestHandler(来自 ellipse/handlers-container 包)来生成 Ellipse\Dispatcher 实例。

ContainerMiddlewareContainerRequestHandler 的逻辑在 ellipse/middleware-containerellipse/handlers-container 文档页面中描述。

<?php

namespace App;

use SomePsr11Container;

use Ellipse\DispatcherFactory;
use Ellipse\Dispatcher\ContainerResolver;

// Get some Psr-11 container.
$container = new SomePsr11Container;

// Decorate a DispatcherFactoryInterface implementation with a ContainerResolver.
$factory = new ContainerResolver($container, new DispatcherFactory);

// A dispatcher using both class names and Psr-15 instances can now be created.
$dispatcher = $factory(SomeRequestHandler::class, [SomeMiddleware1::class, new SomeMiddleware2]);