【问题标题】:PHP Always run functionPHP始终运行功能
【发布时间】:2009-10-16 17:43:15
【问题描述】:

我正在尝试以 JSON 格式返回一些错误。所以,我做了一个类级别的变量:

public $errors = Array();

因此,在脚本的下方,不同的函数可能会返回错误,并将它们的错误添加到 $errors 数组中。但是,我必须使用 return;在某些地方发生错误后停止脚本。

那么,当我这样做时,我怎样才能仍然运行我的最后一个错误函数来返回所有收集到的错误?如何解决必须停止脚本的问题,但仍想返回错误以说明我需要停止脚本的原因?!

【问题讨论】:

    标签: php json


    【解决方案1】:

    真正的骨架:

    $errors = array();
    
    function add_error($message, $die = false) {
      global $errors;
      $errors[] = $message;
      if ($die) {
        die(implode("\n", $errors));
      }
    }
    

    【讨论】:

      【解决方案2】:

      如果你使用的是 PHP5+,你的类可以有一个 destructor 方法:

      public function __destruct() {
          die(var_dump($this->errors));
      }
      

      【讨论】:

        【解决方案3】:

        【讨论】:

        • 不认为脚本已经“完成”了吗?
        • 是的,当错误情况严重时,您需要致电exit()
        【解决方案4】:
        1. 将错误添加到当前$_SESSION
        2. 将最新错误添加到任何类型的 cacheXML 或某些存储中

        如果代码“停止”:

        //代码发生错误

        die(print_r($errors));

        【讨论】:

          【解决方案5】:

          您可以使用涉及 do{} 的技巧。

          do {
              if(something) {
                  // add error
              }
              if(something_else) {
                  // add error
                  break;
              }
              if(something) {
                  // add error
              }
          }while(0);
          
          // check/print errors
          

          注意break,你可以随时用它来突破do作用域,之后你就有了最终的错误返回逻辑。 或者你可以只在一个函数中 do{} 的内容,并使用 return 而不是 break,这样会更好。或者是的,甚至更好,一个带有析构函数的类。

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            相关资源
            最近更新 更多