"在这条线上发现了多个注释"
我以前一直在使用aptana和其他IDE,但从来没有给我这个错误,但是昨天我安装了zend studio,它在我分配的所有代码中给出了以下错误,同时也检查了条件.
code:
line 16: if ($message_array = @unserialize($e->getMessage()))
line 17: $message = $message_array;
Run Code Online (Sandbox Code Playgroud)
在所有if条件中,我将值赋给变量并检查变量是否为true/false,它给出了错误"在此行找到多个注释"
是啊,这句法通常是由最体面的IDE为"意外分配"(因为它是不是很明显,如果你的意思是标记=或==).大多数将允许您将其包装在一个()以使错误沉默(从那时起,显然您想要结果而不是测试):
if (($message_array = @unserialize($e->getMessage()))) {
}
Run Code Online (Sandbox Code Playgroud)
此外,为了便于阅读和维护,我会在那里提出一些建议.
首先,使用大括号.由于它只是一个让你不能使用它们的特殊情况,我个人认为总是使用它们是更好的形式,因此很明显是什么意思.
第二,在if条款之外做所有的对齐.它使您更快速,更容易地快速了解您的意思.而且它看起来不那么杂乱.
$message_array = @unserialize($e->getMessage());
if ($message_array) {
...
}
Run Code Online (Sandbox Code Playgroud)
第三,我建议避开@操作员.对我而言,它是代码腐烂的标志.虽然我知道它易于使用且比正确处理错误更容易,但我认为这只是一个捷径,会让你的生活更加艰难.你可以通过几种方式避免它.首先,您可以在传递之前检查字符串unserialize.确保它是非空的,字符串等.其次,你可以安装一个error handler来抛出PHP错误的异常(我做的).这样,您只需将unserialize调用包装在一个try {} catch(){}块中.它更好,因为你实际上可以检查错误,而不仅仅是相信抛出的错误是你认为的错误...