当我设置error_reporting(E_ALL | E_STRICT);
时,我的代码会产生Undefined variable
错误。我可以解决它们,但是我想知道在编写通过严格检查的代码和仅关闭E_STRICT
之间是否存在速度或内存使用方面的差异?
答案 0 :(得分: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);
}
最终它没有被初始化,并且某人的医疗记录表被默默地截断。
简而言之,你应该随时发出警告:这是你的第一道防线。但是,当您需要将代码转移到生产环境中时,您绝对希望错误报告关闭。您不希望恶意用户深入了解应用程序的内部工作情况,或者 - 更糟 - 您的数据库。
答案 1 :(得分:1)
没有速度效益,但使用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?
答案 2 :(得分:0)
错误越少,速度越快; 可维护性将增加; 也许内存增强,因为日志不会是flus