这怎么可能是有效的PHP代码?还有什么可以避免呢?

时间:2014-05-28 00:19:45

标签: php conditional-statements

我今天检查了我的项目范围错误日志,发现了大量的这些通知:

  

“未定义的索引:第3行的/myScript.php中的myVar”

我花了很长时间才找到错误。所以在这里,缩小到只有4行代码(原来它比这更多一点)。 我只是没看到分号!

if (isset($_POST['myVar']));
{
    echo $_POST['myVar'];
}

在其他事情容易出错的情况下,我有自己的方法。就像在这个例子中,我错误地使用“=”而不是“==”:

if ($myVar = 5) {} // valid PHP but sooo wrong...
if (5 = $myVar) {} // parser error warns me of my own mistakes

那么在上面的例子中我能做些什么才能不让分号发生?

2 个答案:

答案 0 :(得分:0)

要回答您的直接问题,这是使用IDE提供更好的提示,或者只是更好地调试以便它不会花费您年龄的问题。您还可以打开错误消息,以便立即收到错误而不必检查日志。

error_reporting(E_ALL);

然后使用错误消息提示来帮助隔离问题。它说错误发生在第3行并且myVar未定义,所以你应该专注于第3行或它前面的内容,并查看为什么使用未定义的变量。

我猜这种情况后,你会更快注意到半冒号。

答案 1 :(得分:0)

您可以改善编码风格。

PSR-2样式不允许在使用IF时将花括号放在新行上,它们必须与IF在同一行,用空格分隔。

if (isset($_POST['myVar'])); {
    echo $_POST['myVar'];
}

这看起来比你的代码更可疑。仍然有足够的字符来混淆搜索眼睛,但是你通常不希望在IF语句的括号和花括号之间加一个分号。

编码风格就是让错误看起来像错误并突出显而易见。虽然这个语法确实是有效的,但它看起来很奇怪,因为分号属于一行的末尾。

如果您自动格式化代码,那么您将获得原始代码,让您想知道为什么花括号进入下一行......

相关问题