为什么很多程序员使用:
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变量