Php 返回混合错误和布尔值的替代方法
我有一个(常见的)情况,我当前返回的结果是混合类型,有时是布尔值,有时是错误消息。例如:Php 返回混合错误和布尔值的替代方法,php,error-handling,function,Php,Error Handling,Function,我有一个(常见的)情况,我当前返回的结果是混合类型,有时是布尔值,有时是错误消息。例如: function checked_thing_is_legal(){ // Do stuff and check for errors in here. } // Returns true if there are no errors, otherwise returns an error message string. 这感觉很糟糕,有人曾经说过“将代码提取为单个可靠的返回值很好”,我发现这是一个很好
function checked_thing_is_legal(){
// Do stuff and check for errors in here.
} // Returns true if there are no errors, otherwise returns an error message string.
这感觉很糟糕,有人曾经说过“将代码提取为单个可靠的返回值很好”,我发现这是一个很好的建议。那么,检查错误的更好范例是什么呢?将是一种经典的方法……您有以下几种可能性:
- 对类型执行开关检查
- 为每种类型()创建异常/类
- 我在这里看到两个选项
使用原子(布尔)验证器并将错误消息与验证器本身分离
if(!is_valid_email(blah)) print "invalid email";
将验证器对象与布尔测试()和字符串错误()函数一起使用:
$v = new SomeValidator;
if(!$v->test(blah))
echo $v->error();
在快速和肮脏的应用程序中,如果一切正常,
也可以考虑返回空值。 $err = validate_email(blah);
if(empty($err)) ok else print $err;
@盖伦。。。。我也不建议将异常作为第一选择…^^^,顺便说一句,这个例子看起来不像是php的“新手”能够理解它。@stereofrog-当错误消息不可接受时(我知道这有点超出OP的问题范围)该怎么办。我想在这种情况下,您应该返回false,@mikemore。我个人使用了这里列出的两种方法,并发现一个单独的错误打印功能更清晰,因为在成功测试中没有模糊性+1.