php代码,是慢还是错?

Bas*_*sit 0 php zend-studio

"在这条线上发现了多个注释"

我以前一直在使用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,它给出了错误"在此行找到多个注释"

irc*_*ell 9

是啊,这句法通常是由最体面的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(){}块中.它更好,因为你实际上可以检查错误,而不仅仅是相信抛出的错误是你认为的错误...