Please suggest how to reduce the number of returns in this function. Sonar-lint suggests to limit the number of returns to 3. https://rules.sonarsource.com/php/RSPEC-1142
JavaScript
x
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,
]);
}
}
Advertisement
Answer
Something like:
JavaScript
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,
]);
}