策略
路由回调函数的签名由路由策略决定。默认情况下,Slim 期望路由回调函数接受请求、响应和一个包含路由占位符参数的数组。这被称为 RequestResponse 策略。然而,你可以通过使用不同的策略来改变预期的路由回调函数签名。例如,Slim 提供了一种另外的策略叫做 RequestResponseArgs,它接受请求、响应以及每个路由占位符作为单独的参数。
以下是使用这种替代策略的示例:
<?php
use Slim\Factory\AppFactory;
use Slim\Handlers\Strategies\RequestResponseArgs;
require __DIR__ . '/../vendor/autoload.php';
$app = AppFactory::create();
/**
* 在 RouteCollector 组件上更改默认的调用策略会影响到在此更改之后定义的每个路由
*/
$routeCollector = $app->getRouteCollector();
$routeCollector->setDefaultInvocationStrategy(new RequestResponseArgs());
$app->get('/hello/{name}', function ($request, $response, $name) {
$response->getBody()->write($name);
return $response;
});
或者你可以在每个路由上设置不同的调用策略:
<?php
use Slim\Factory\AppFactory;
use Slim\Handlers\Strategies\RequestResponseArgs;
require __DIR__ . '/../vendor/autoload.php';
$app = AppFactory::create();
$routeCollector = $app->getRouteCollector();
$route = $app->get('/hello/{name}', function ($request, $response, $name) {
$response->getBody()->write($name);
return $response;
});
$route->setInvocationStrategy(new RequestResponseArgs());
你可以通过实现 Slim\Interfaces\InvocationStrategyInterface 来提供自己的路由策略。