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

PHP:编写严格的代码有什么好处吗?,php,error-reporting,strict,Php,Error Reporting,Strict,当我设置错误报告时(E|u ALL | E|u STRICT),我的代码生成未定义变量错误。我可以解决这些问题,但我想知道,编写通过严格检查的代码和仅仅关闭E_strict在速度或内存使用方面是否有任何区别?没有机械上的好处。但是,您可以避免做一些非常常见、非常愚蠢的事情,比如在使用变量之前不总是初始化它——因为启用E_STRICT,PHP将生成一个错误,而不是允许函数以潜在的灾难性、可能是不可见的方式中断 例如,完全可以想象,一个数据库支持的应用程序使用的变量不是由所有可能的执行路径初始化的:

当我设置
错误报告时(E|u ALL | E|u STRICT),我的代码生成
未定义变量
错误。我可以解决这些问题,但我想知道,编写通过严格检查的代码和仅仅关闭
E_strict
在速度或内存使用方面是否有任何区别?

没有机械上的好处。但是,您可以避免做一些非常常见、非常愚蠢的事情,比如在使用变量之前不总是初始化它——因为启用
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);
}
//给用户的记录添加了过敏反应
公共功能添加($YID){
$Patient=$this->Patient->Load();
如果($Patient->Insurance->StartDateAllergies->Get();
$Allergies[]=$AllergyID;
}
$Patient->Allergies->Set($Allergies);
}
最终,它不会被初始化,并且某人的病历表会被自动截断


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

错误越少,速度越快; 可维护性将得到提高;
内存增强可能也是如此,因为log不会是flus,所以在使用PHP5.2.0时没有速度优势。或者在您应该使用E|u ALL | E|u STRICT进行开发之前

但是对于上面的PHP5.2.0,E_-STRICT包含在E_-ALL中

或者您可以使用错误报告(-1);这将始终包括所有内容,即使它们存在于E_ALL中

请使用下面的stackoverflow问题作为进一步参考

永不开发,无错误报告(E\U ALL)