pine3ree / p3-mezzio-controller
mezzio/mezzio 中 controller 类型的中间件包装器
0.2.5
2020-05-16 20:52 UTC
Requires
- php: ^7.1
- mezzio/mezzio: ^3.0
- psr/container: ^1.0
- psr/http-message: ^1.0
- psr/http-server-middleware: ^1.0
Requires (Dev)
- laminas/laminas-diactoros: ^2.2
- malukenho/docheader: ^0.1
- phpspec/prophecy: ^1.10
- phpstan/phpstan: ^0.12
- phpstan/phpstan-strict-rules: ^0.12
- phpunit/phpunit: ^7.5 || ^8.5
- squizlabs/php_codesniffer: ^3.5
README
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 等,并基于返回类型构建适当响应。