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


Why some programmers use this "if" condition (and what to do to make it work)

为什么很多程序员使用:

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来抑制不存在的变量和属性上的错误来使用"功能",或者它只是一个应该避免的坏习惯?

或者这只是一个应该避免的坏习惯?

肯定

。抑制或忽略错误是不好的做法。

这在我看来根本不像基础练习。正如您所说的,如果不设置error_reporting, PHP将在特定情况下抛出许多警告(其中没有设置变量)。

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

他们会使用它,因为它打字更快。他们可能不会考虑到它可能引起的所有问题。

变量和属性可能存在也可能不存在的条件的"正确"语法是什么

很遗憾,没有。

代码中使用的每个变量都应该首先定义。如果需要的话,这是唯一的好方法。

所以,对于类属性来说,这很容易——在类定义中定义每一个属性已经很普遍了。

对于外部变量,这就不那么明显了。
没有单一的情况。例如,如果程序流依赖于GET变量的存在,则可以检查它是否设置*

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

注意,我们没有使用这个变量contents,而只是检查它的存在!

否则,如果我们希望page总是被设置,我们必须首先检查它,如果不设置,设置默认值。然后使用这个新变量而不是$_GET变量