checkLoginA与checkLoginB是被login调用的方法,两个检测方法最终都是一样的效果,调用一个就可以,不同的是checkLoginA采用了return数组的方式,把错误信息传回传给了login主方法去处理,login再调用了retError输出错误给客户端,而checkLoginB是直接调用了输入错误的方法retError输出错误,这两种方式,哪种更为合理一点,大家都习惯那种方式?
public function login(){
$postData = $this->request->param();
//调用方式1
$result = $this->checkLoginA($data);
//调用方式2
//$result = $this->checkLoginB($postData);
if($result['errorCode']!=200){
$this->retError($result['errorCode'],$result['message']);
}else{
$this->retSuccess($result);
}
}
//方式1 return错误信息回到login
private function checkLoginA($data):array{
try {
$checkResult = $this->validate($data,'Login');
if(true !== $checkResult){
$result = [];
$result['errorCode'] = 422;
$result['message'] = $checkResult;
// 验证失败 返回错误信息,这里是return错误的数组,不是直接调用输出json错误的方法输出错误
return $result;
}
$loginInfo = $this->checkPwd($data);//去检测密码
if($loginInfo['errorCode']===200){
return $loginInfo; //$loginInfo里面有errorCode,messgae,data信息
}else{
$result['errorCode'] = 422;
$result['message'] = $loginInfo['message'];
return $result;
}
} catch (Exception $e) {
$result['errorCode'] = 500;
$result['message'] = $e->getMessage();
return $result;
}
}
//方式2 直接调用retError输出json格式的错误信息
private function checkLoginB($data){
try {
$checkResult = $this->validate($data,'Login');
if(true !== $checkResult){
// 验证失败 直接输出错误信息
$this->retError(422,$checkResult);
}
$loginInfo = $this->checkPwd($postData);//去检测密码
if($loginInfo['errorCode']===200){
//成功//$loginInfo里面有errorCode,messgae,data信息
return $loginInfo;
}else{
//失败
$this->retError($loginInfo['errorCode'],$loginInfo['message']);
}
} catch (Exception $e) {
$this->retError(500,$e->getMessage());
}
}
//输出成功信息给给客户端
public function retSuccess(array $data){
http_response_code(200);
exit(json_encode($data));
}
//输出失败的json信息给客户端
public function retError(int $errorCode,string $message){
http_response_code($errorCode);
$result['errorCode'] = $errorCode;
$result['message'] = $message;
$result['data'] = [];
exit(json_encode($result));
} 最佳答案