Slim 4 route strategies for parameter upcasting
Via Composer
$ composer require ilexn/slim-route-strategies
$resolver = new RouteArgsResolver();
$resolver->add(new Case1());
$app = AppFactory::create();
$routeCollector = $app->getRouteCollector();
$routeCollector->setDefaultInvocationStrategy($resolver);
$app->get('/hello/{name}', function ($request, $response, Name $name) {
$response->getBody()->write("Hello ". $name->getName());
return $response;
});
final class Case1 implements RouteArgsResolverInterface
{
public function __invoke(string $value): int
{
return 1;
}
public function get(string $value): Name
{
return new Name($value);
}
/**
* @return callable[]
*/
public function getArgsResolver(): array
{
return [
'name' => [$this, 'get'],
'b' => static function ($value) {
return $value;
},
'c' => $this,
];
}
}