2011-01-21 80 views
0

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

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} 

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

回答

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; ?>" /> 
0

使用这样的事情

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

} 
else 
{ 
} 

这种方式,你甚至可以检查各个错误。

0

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

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

+0

这听起来不错。将验证放在函数之外是否更好?因为如果我曾经创建过移动版本,或者从另一个地方调用函数进行验证,看起来更容易 – user583951 2011-01-22 01:13:00

相关问题