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); 
    } 
相关问题