为什么@unset会出现解析错误?

时间:2011-01-12 23:54:56

标签: php parsing

为什么在调用@时,您无法使用unset运算符隐藏错误?以下结果导致解析错误:

@unset($myvar);

4 个答案:

答案 0 :(得分:10)

@运算符仅适用于表达式,unset是语言结构,而不是函数。有关详细信息,请参阅manual page

  

注意:@ -operator仅适用于   表达式。一个简单的经验法则   是:如果你可以采取的价值   什么,你可以在@之前   操作员。例如,你可以   将它添加到变量,函数和   include()调用,常量等   向前。你不能把它添加到   函数或类定义,或   条件结构,如if和   foreach,等等。

答案 1 :(得分:5)

您可以通过在函数/语句前加上@来隐藏错误。但是,unset是一种语言结构,因此它不支持@ -rule。

好处是unset()永远不会失败,即使变量本身不存在,所以这不是必需的。

正如夜间人提到的,使用@是非常糟糕的做法。

答案 2 :(得分:4)

错误抑制运算符仅适用于表达式:

unset是一种语言结构,而不是函数,因此无法使用@

答案 3 :(得分:0)

  

为什么在调用unset时不能用@运算符隐藏错误?

我不知道。但是你不应该使用错误抑制操作符(@)。有两种不同的情况:

更新发育

您希望在发生错误时立即看到所有错误,最好使用PHP提供的原始错误消息。

生产

您希望没有PHP错误消息给用户起泡。相反,您希望记录PHP错误消息并显示您自己的信息,外行人可以理解。

使用@时无法实现这一区别。您应该通过配置display_errorserror_reporting并使用set_error_handler设置错误处理程序来区分这些方案。