4

我在編程方面比較新。我試圖在我的應用中捕捉並顯示錯誤。隨着全球變量很簡單:應用程序中的錯誤處理函數

$errors = ''; 

class Name { 

    /** 
    * Validate form 
    */ 
    public function validate_form() { 
    global $errors; 

     (...) 
     if (empty($_POST["blabla"])) { 
      $errors = 'Error'; 
     } 
     (...) 

     return; 
    } 

    /** 
    * Display errors 
    */ 
    public function show_error() { 
     global $errors; 
     if(!empty($errors)) return '<div class="error">' . PHP_EOL . htmlspecialchars($errors) .'</div>'; 
    } 

} 

......但我讀到你不應該使用全局變量。我怎麼能做同樣的事情沒有全局變量?

對不起,我的英語;)

回答

1

如何不讓它成爲全局的,即:

<?php 
class Name { 
    public $errors; 

    /* 
    * Validate form 
    */ 
    public function validate_form() { 

     (...) 
     if (empty($_POST["blabla"])) { 
      $this->errors = 'Error'; 
     } 
     (...) 

     return; 
    } 
} 

然後每次你在類運行溫控功能,檢查是否生成錯誤:

$obj = new Name()->validate_form(); 

if(isset($obj->errors)){ 
    //oops, an error occured, do something 
} 
+0

這適用於我。我將$ obj - > $ errors更改爲$ obj-> errors – Shirtz

+0

對於該錯字感到抱歉 –

1

您可以拋出異常

<?php 
class Name { 

    /** 
    * Validate form 
    */ 
    public function validate_form() { 


     (...) 
     if (empty($_POST["blabla"])) { 
      throw new RuntimeException('Error'); 
     } 
     (...) 

     return; 
    } 
    $obj = new Name(); 
    /** 
    * Display errors 
    */ 
    public function show_error($e) { 
     return '<div class="error">' . PHP_EOL . htmlspecialchars($e->getMessage()) .'</div>'; 
    } 
} 
// TEST 
    try {  
     $obj->validate_form(); 
    } 
    catch(Exception $e) { 
     $obj->show_error($e); 
    } 
相關問題