【问题标题】:PHP: Is there any benefit to writing strict code?PHP:编写严格的代码有什么好处吗?
【发布时间】:2012-08-18 14:55:58
【问题描述】:

当我设置error_reporting(E_ALL | E_STRICT); 时,我的代码会产生Undefined variable 错误。我可以解决它们,但我想知道编写通过严格检查的代码和关闭 E_STRICT 之间在速度或内存使用方面是否有任何差异?

【问题讨论】:

  • Never never never ,开发没有error_reporting(E_ALL)

标签: php error-reporting strict


【解决方案1】:

没有机械上的好处。但是,您可以避免做一些非常常见、非常愚蠢的事情,比如在使用变量之前并不总是初始化它——因为打开E_STRICT,PHP 将生成错误,而不是允许函数中断潜在的灾难性事件,并且可能——看不见的方式。

例如,完全可以想象数据库支持的应用程序使用的变量并非由所有可能的执行路径初始化:

// Adds an allergy to the user's records
public function Add($AllergyID) {
    $Patient = $this->Patient->Load();

    if ($Patient->Insurance->StartDate < now()) {
          $Allergies = $Patient->Allergies->Get();
          $Allergies[] = $AllergyID;
    }

    $Patient->Allergies->Set($Allergies);
}

最终它没有被初始化,并且某人的病历表被静默截断。

简而言之,您应该始终带着所有警告进行开发:这是您的第一道防线。但是,当需要将您的代码投入生产时,您绝对希望关闭错误报告。您不希望恶意用户深入了解您的应用程序的内部运作,或者 - 更糟糕的情况 - 你的数据库。

【讨论】:

    【解决方案2】:

    错误越少,速度越快; 可维护性将增加; 内存增强也可以,因为日志不会混乱

    【讨论】:

      【解决方案3】:

      没有速度优势,但在使用 PHP 5.2.0 时。或在您应该使用 E_ALL | 之前E_STRICT 用于开发目的。

      但是对于 PHP 5.2.0 以上的 E_STRICT 是包含在 E_ALL 本身中的。

      或者你可以使用error_reporting(-1);这将始终包括所有内容,即使它们存在于 E_ALL 中。

      使用下面的 stackoverflow 问题作进一步参考 What is the recommended error_reporting() setting for development? What about E_STRICT?

      【讨论】:

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