2011-01-21 41 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

相關問題