从函数中向用户返回错误的标准方法是什么? (电子邮件无效,最大字符数等)。
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 :(得分: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,为什么不在注册之前进行验证呢?无论如何,您将需要某种错误路径,并且可能会根据情况使用几种不同的错误消息。当您最终准备好调用注册时,它应该因为自己的原因而成功或失败,而不是因为业务规则需要非空的电子邮件地址。