PHP:编写严格的代码有什么好处吗?

bok*_*ora 2 php error-reporting strict

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

Win*_*ail 9

没有机械上的好处.但是,您可以避免做真正常见的,非常愚蠢的事情,例如在使用它之前并不总是初始化变量 - 因为在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);
}
Run Code Online (Sandbox Code Playgroud)

最终它没有被初始化,并且某人的医疗记录表被默默地截断.

简而言之,你应该始终发展所有警告:这是你的第一道防线.但是,当需要将代码转移到生产环境中时,您绝对希望关闭错误报告.您不希望恶意用户深入了解应用程序的内部工作方式,或者更糟糕的是 - 您的数据库.