Php 应用程序中的错误处理程序函数

Php 应用程序中的错误处理程序函数,php,error-handling,global-variables,global,pass-by-reference,Php,Error Handling,Global Variables,Global,Pass By Reference,我是编程方面的新手。我试图捕捉并显示应用程序中的错误。使用全局变量很简单: $errors = ''; class Name { /** * Validate form */ public function validate_form() { global $errors; (...) if ( empty($_POST["blabla"]) ) { $errors = 'Error';

我是编程方面的新手。我试图捕捉并显示应用程序中的错误。使用全局变量很简单:

$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>';
    }

}
$errors='';
类名{
/**
*验证表单
*/
公共功能验证表单(){
全球$错误;
(...)
如果(空($_POST[“blabla”])){
$errors='Error';
}
(...)
返回;
}
/**
*显示错误
*/
公共函数show_error(){
全球$错误;
如果(!empty($errors))返回“”。PHP EOL.htmlspecialchars($errors)。“”;
}
}
…但我读到你不应该使用全局变量。没有全局变量,我如何做同样的事情


对不起我的英语;)

您可以抛出异常

<?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);
    }

不让它全球化怎么样,即:

<?php
class Name {
  public $errors;

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

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

      return;
  }
}

这对我有用。我把$obj->$errors改为$obj->errorssorry,关于那个打字错误
$obj = new Name()->validate_form();

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