pine3ree/p3-mezzio-controller

mezzio/mezzio 中 controller 类型的中间件包装器

0.2.5 2020-05-16 20:52 UTC

This package is auto-updated.

Last update: 2024-10-03 04:11:47 UTC


README

Build Status

mezzio/mezzio 中 controller 类型的中间件包装器

状态

进行中!

安装

您可以使用 Composer 安装此库("minimum-stability": "dev")

$ composer require pine3ree/p3-mezzio-controller

文档

您现在可以定义由 generic-class 控制器方法处理的两种新类型的路由

使用可调用字符串格式定义路由

$app->get('/home/kitchen', 'App\Controller\Home::kitchen', 'home/kitchen');

使用可调用数组格式定义路由

use App\Controller\Home;
//...
$app->get('/home/bedroom', [Home::class, 'bedroom'], 'home/bedroom');

使用配置文件定义路由

// config/autoload/routes.global.php

use App\Controller\Home;
use App\Middleware\BeforeHomeControllerMiddleware;
use App\Middleware\AfterHomeControllerMiddleware;

return [
    'routes' => [
        'home/kitchen' => [
            'path' => '/home/kitchen',
            'middleware' => 'App\Controller\Home::kitchen',
        ],
        'home/bedroom' => [
            'path' => '/home/kitchen',
            'middleware' => [Home::class, 'bedroom'],
        ],
        'home/living-room' => [
            'path' => '/home/living-room',
            'middleware' => [
                BeforeHomeControllerMiddleware::class,
                [Home::class, 'livingRoom'],
                AfterHomeControllerMiddleware::class,
            ],
        ],
    ],
];

这些定义仅在控制器类存在且目标方法是公共的情况下有效。

目前,目标控制器方法签名可能如下所示

use Psr\Http\Message\ServerRequestInterface;
use Psr\Http\Message\ResponseInterface;

class Home
{
    public function kitchen(ServerRequestInterface $request): ResponseInterface
    {
        // return a response
    }

    public function bedroom(): ResponseInterface
    {
        // return a response
    }
}

控制器类可能是一个简单的无构造函数类。在大多数情况下,它将有依赖项,因此必须在容器配置中定义,包括其工厂。

待办事项

  • 添加策略将请求属性作为参数传递给目标控制器方法
  • 添加策略以允许从控制器方法返回 null、字符串、数组、xml 等,并基于返回类型构建适当响应。