代码之家  ›  专栏  ›  技术社区  ›  boksiora

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

  •  2
  • boksiora  · 技术社区  · 13 年前

    当我设置 error_reporting(E_ALL | E_STRICT); ,我的代码生成 Undefined variable 错误。我可以解决这些问题,但我想知道,在编写通过严格检查的代码和仅仅转动代码之间,在速度或内存使用方面是否存在差异 E_STRICT

    3 回复  |  直到 13 年前
        1
  •  9
  •   Winfield Trail    12 年前

    没有机械效益。然而,您可以避免做一些非常常见、非常愚蠢的事情,比如在使用变量之前不总是初始化它——因为 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
  •  1
  •   Community Mohan Dere    8 年前

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

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

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

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

        3
  •  0
  •   TheHe    13 年前

    误差越小,速度越快; 可维护性将得到提高; 内存增强也许也是,因为日志不会被刷新

    推荐文章