2016-07-25 59 views
0

是否有更好的,或更有效的方式從路徑的可變調用一個方法:貝斯特方式切換情況下的路線

$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(); 
}); 

它僅$應用程序的方法['manager.ac ']誰改變。

回答

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')] 
    ); 
} 
+0

尼斯之一!謝謝@Max – Macbernie

相關問題