Пожалуйста, предложите способы упростить эту функцию - PullRequest
0 голосов
/ 04 мая 2020

Подскажите, пожалуйста, как уменьшить количество возвратов в этой функции. Сонар-Линт предлагает ограничить количество возвратов до 3. https://rules.sonarsource.com/php/RSPEC-1142

  public function index(Request $request)
    {
        $req_body = (json_decode($request->getContent(), true));

        switch ($req_body['action']) {
            case "init":
                return $this->init($req_body['data']);
                break;
            case "login":
                return $this->login($req_body['data']);
                break;
            case "requestOtp":
                return $this->requestOtp($req_body['data']);
                break;
            case "addDetails":
                return $this->addDetails($req_body['data']);
                break;
            case "logout":
                return $this->logout($req_body['data']);
                break;
            case "home":
                return $this->home($req_body['data']);
                break;
            case "getDepartments":
                return $this->getDepartments($req_body['data']);
                break;
            case "getDoctors":
                return $this->getDoctors($req_body['data']);
                break;


            default:
                return response()->json([
                    'error' => true,
                    'message' => 'Invalid action',
                    'data' => (object)null,
                ]);
        }
    }

1 Ответ

1 голос
/ 04 мая 2020

Что-то вроде:

public function index(Request $request)
{
    $req_body = (json_decode($request->getContent(), true));

    // Collect all available methods here:
    $methods = ['init', 'login', 'requestOtp'];  // etc

    // if method name is in the collection - call this method
    if (in_array($req_body['action'], $methods)) {
        return $this->{$req_body['action']}($req_body['data']);
    }

    return response()->json([
        'error' => true,
         'message' => 'Invalid action',
         'data' => (object)null,
    ]);
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...