从函数返回错误的标准方法是什么?

时间:2011-01-21 04:29:26

标签: php class function return

从函数中向用户返回错误的标准方法是什么? (电子邮件无效,最大字符数等)。

function register($name, $email) {
     if(!$name) {
            $registration_errors = 'name empty,';
     }

     if(!email) {
            $registration_errors = $errors . 'email empty,';
     }

     if($registration_errors) {
           return $registration_errors;
     }
     else {
         register stuff........
         return true;
     }
}

现在的问题是它总是返回true,所以你不能做类似的事情:

if(register()) {blah blah blah} else { put errors under inputs}

那么这样做的标准方法是什么?

3 个答案:

答案 0 :(得分:0)

<?php
// in your register function:
$registration_errors = array();
if (!$name) {
    $registration_errors['name'] = 'Name is required.';
}
// etc.
?>

<!-- in your phtml: -->
<?php if (array_key_exists('name', $registration_errors) echo $registration_errors['name'];?>
<label for="name">Name</label>
<input id="name" name="name" type="text" value="<?php echo $name; ?>" />

答案 1 :(得分:0)

使用类似的东西

function register
{
.. 
else
{
return array('error' => $errorwhichyoufound);
}
....
}
$result = register();
if((array_key_exists('error', $result)))
{

}
else
{
}

这样您甚至可以检查个别错误。

答案 2 :(得分:0)

有各种各样的方法可以做到这一点,你甚至可以认为其中一些是“标准的”。您可以返回包含错误代码的数组(如上面的答案),您可以将错误存储为对象属性(要求您将“register”称为对象方法),您可以将错误存储在全局变量中,或者将错误放在已注册的位置。您可以传入变量引用并将变量值设置为错误。您可以反转返回逻辑,因此字符串将为false,零将为真值。你可能会引发错误。你可以抛出异常。

这里真正的问题是“注册”功能应该执行某些功能,并且你要求它清理输入以防万一有趣的事情发生。因此,如果您确实需要清理$ name和$ email,为什么不在注册之前进行验证呢?无论如何,您将需要某种错误路径,并且可能会根据情况使用几种不同的错误消息。当您最终准备好调用注册时,它应该因为自己的原因而成功或失败,而不是因为业务规则需要非空的电子邮件地址。