为什么许多程序员使用:
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以抑制不存在的变量和属性上的错误以使用“功能”,或者这只是一个应该避免的错误做法?
答案 0 :(得分:6)
或者这只是一个应该避免的不良做法?
绝对是。抑制或忽略错误是一种不好的做法。
答案 1 :(得分:0)
在我看来,这根本不像麻烦的做法。正如你所说的那样,如果不设置error_reporting,PHP会在特定情况下抛出许多警告(未设置变量)。
在我看来,使用isset是最好的方法。
答案 2 :(得分:0)
他们会使用它,因为输入速度更快。他们可能不会想到它可能造成的所有问题。
答案 3 :(得分:0)
对于可能存在或可能不存在的变量和属性的条件的“正确”语法是什么
不幸的是,没有。
应首先定义代码中使用的每个变量。如果您需要,这是唯一的好习惯。
因此,对于类属性来说,它很容易 - 它们中的每一个都应该在类定义中定义,这已经司空见惯了。
对于外部变量,它不太明显 没有一个场景。 比方说,如果程序流程依赖于GET变量的存在,那么可以检查它是否已设置 *
if (isset($GET['page'])) ...
请注意,我们没有使用此变量内容,只检查它是否存在!
否则,如果我们希望始终设置page
,我们必须先检查它,然后设置默认值。然后使用该新变量而不是$ _GET one。