是否有更好或更有效的方法从路径变量调用方法:
$app->get('/ac/{route}', function (Request $request, $route) use ($app) {
switch ($route) {
case 'formejur':
$infos = $app['manager.ac']->getPropFormejur( $request->get('find') );
break;
case 'naf':
$infos = $app['manager.ac']->getPropNaf( $request->get('find') );
break;
case 'fonction':
$infos = $app['manager.ac']->getPropFonction( $request->get('find') );
break;
case 'ville':
$infos = $app['manager.ac']->getPropVille( $request->get('find') );
break;
case 'dep':
$infos = $app['manager.ac']->getPropDepartement( $request->get('find') );
break;
default: break;
}
$response = new JsonResponse();
$response->setData($infos);
return $response->getContent();
});
只有$ app ['manager.ac']的方法才会改变。
答案 0 :(得分:3)
您可以使用call_user_func_array
功能:
$map = [
'formejur' => 'getPropFormejur',
'naf' => 'getPropNaf',
...
];
if (!empty($map[$route])) {
$infos = call_user_func_array(
[$app['manager.ac'], $map[$route]],
[$request->get('find')]
);
}