当函数正常执行时,从 PHP 函数返回错误的最佳方法是什么?
Example
public function login($user, $pw){
if(!$this->verifyUser($user))
// return error about invalid user
}
else if (!$this->verifyPw($pw)){
// return error about invalid pw
}
else {
// return OK
}
}
调用者 - 以 JSON 形式返回 Web UI 的响应
public function doLogin($user,$pw){
$res = $this->login($user, $pw);
return json_encode($res);
}
一方面,我可以理解以数组形式返回结果,但我觉得这对于如此低级的函数没有意义。也许他们应该返回错误代码,然后调用者必须查找错误代码字符串?
假设你在一个对象中,你基本上有三个主要选择:
- 将错误存储在类似的内容中
$this->errors
数组并返回false
- 有某种错误收集器作为对象的依赖项,您可以在其中
call $this->collector->addError('blah blah');
并返回false
- 抛出异常
对于前两种方法,您必须检查返回值,并基于此提取错误列表。但这两个选项的优点是能够收集多个错误。
异常方法在耦合上稍微轻一些,但你只能得到one error.
至于实际返回什么,我建议使用错误代码+描述字符串。但是您的班级不会返回该字符串。相反,您的错误应该使用一些“占位符”来注册,稍后将被翻译:
$this->errors[] = [
'code' => 52,
'msg' => 'authentication.login.invalid-password',
];
当您从对象中提取错误时,它基本上会是这样的条目列表,然后您只需通过翻译服务运行它们即可。
在例外情况下,相同的信息将驻留在$e->getCode()
and $e->getMessage()
,当你的对象抛出InvalidPassword
例外。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)