“在此行找到多个注释”
我之前一直在使用aptana和其他IDE,但从来没有给我这个错误,但是昨天我安装了zend studio,它在我指定的所有代码中都给出了以下错误,并且同时检查条件是否存在。< / p>
code:
line 16: if ($message_array = @unserialize($e->getMessage()))
line 17: $message = $message_array;
在所有if条件下,我将值赋给变量并检查变量是否为true / false,它给出了错误“在此行找到了多个注释”
答案 0 :(得分:9)
是的,这种语法通常被大多数体面的IDE标记为“意外分配”(因为如果你的意思是=
或==
,这种情况并不明显)。大多数将允许您将其包装在()
中以使错误无效(从那时起,您显然希望得到结果而不是测试):
if (($message_array = @unserialize($e->getMessage()))) {
}
另外,为了便于阅读和维护,我会在那里提出一些建议。
首先,使用大括号。由于它只是一个让你不能使用它们的特殊情况,我个人认为总是使用它们是更好的形式,因此很清楚它是什么意思。
其次,在if
子句之外进行所有对齐。它使您更快速,更容易地快速了解您的意思。而且它看起来不那么混乱。
$message_array = @unserialize($e->getMessage());
if ($message_array) {
...
}
第三,我建议避免使用@
运算符。对我而言,它是代码腐烂的标志。虽然我知道它易于使用且比正确处理错误更容易,但我认为这只是一个捷径,会让你的生活更加艰难。你可以通过几种方式避免它。首先,您可以在将字符串传递给unserialize
之前检查字符串。确保它是非空的,字符串等。其次,你可以安装error handler
来抛出PHP错误的异常(我做的)。这样,您只需将unserialize
调用包装在try {} catch(){}
块中即可。它更好,因为你实际上可以检查错误,而不仅仅是相信抛出的错误是你认为的错误......
答案 1 :(得分:3)
这不是实际错误。相反,IDE在同一代码行中发现了多个错误,警告或提示。
您可以查看“问题”标签以查看实际的错误和警告。