【问题标题】:Bester way to switch case a route切换路线的最佳方法
【发布时间】:2016-11-29 10:40:58
【问题描述】:

有没有更好或更有效的方法从路由的变量中调用方法:

$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']的方法变了。

【问题讨论】:

    标签: symfony routing silex


    【解决方案1】:

    您可以使用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')]
        );
    }
    

    【讨论】:

      猜你喜欢
      • 2020-08-01
      • 2013-03-19
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-12-16
      • 1970-01-01
      • 2012-04-24
      相关资源
      最近更新 更多