为什么有些程序员使用这种“if”条件(以及如何使其工作)

时间:2011-09-19 12:58:26

标签: php syntax if-statement

为什么许多程序员使用:

if ($_GET['var'] or $this->error)

而不是

if (isset($_GET['var']) or isset($this->error)

不添加

        error_reporting( error_reporting() & ~E_NOTICE )

或,(更短但更慢)

        if (@$_GET['var'] or @$this->error)

...或类似的东西?

你是否需要以某种方式(?)在ini文件中配置php以抑制不存在的变量和属性上的错误以使用“功能”,或者这只是一个应该避免的错误做法?

4 个答案:

答案 0 :(得分:6)

  

或者这只是一个应该避免的不良做法?

绝对。抑制或忽略错误是一种不好的做法。

答案 1 :(得分:0)

在我看来,这根本不像麻烦的做法。正如你所说的那样,如果不设置error_reporting,PHP会在特定情况下抛出许多警告(未设置变量)。

在我看来,使用isset是最好的方法。

答案 2 :(得分:0)

他们会使用它,因为输入速度更快。他们可能不会想到它可能造成的所有问题。

答案 3 :(得分:0)

  

对于可能存在或可能不存在的变量和属性的条件的“正确”语法是什么

不幸的是,没有。

应首先定义代码中使用的每个变量。如果您需要,这是唯一的好习惯。

因此,对于类属性来说,它很容易 - 它们中的每一个都应该在类定义中定义,这已经司空见惯了。

对于外部变量,它不太明显 没有一个场景。 比方说,如果程序流程依赖于GET变量的存在,那么可以检查它是否已设置 *

if (isset($GET['page'])) ...

请注意,我们没有使用此变量内容,只检查它是否存在!

否则,如果我们希望始终设置page,我们必须先检查它,然后设置默认值。然后使用该新变量而不是$ _GET one。