切换路线的最佳方式
Bester way to switch case a route
是否有更好或更有效的方法从路由变量调用方法:
$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']的方法改变了。
您可以使用 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')]
);
}
是否有更好或更有效的方法从路由变量调用方法:
$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']的方法改变了。
您可以使用 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')]
);
}