我今天检查了我的项目范围错误日志,发现了大量的这些通知:
“未定义的索引:第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
那么在上面的例子中我可以做得更好,不让分号发生?
您可以改善编码风格。
PSR-2样式不允许在使用IF时将花括号放在新行上,它们必须与IF在同一行,用空格分隔。
if (isset($_POST['myVar'])); {
echo $_POST['myVar'];
}
这看起来比你的代码更可疑。仍然有足够的字符来混淆搜索眼睛,但是你通常不希望在IF语句的括号和花括号之间加一个分号。
编码风格就是让错误看起来像错误并突出显而易见。虽然这个语法确实是有效的,但它看起来很奇怪,因为分号属于一行的末尾。
如果您自动格式化代码,那么您将获得原始代码,让您想知道为什么花括号进入下一行......
要回答您的直接问题,这是使用IDE提供更好的提示,或者只是调试更好,这样就不会花费你的年龄。您还可以打开错误消息,以便立即收到错误,而不必检查日志。
error_reporting(E_ALL);
然后使用错误消息提示来帮助隔离问题。它说错误是在第3行,并且myVar
未定义,所以你应该专注于第3行或它前面的内容,并查看为什么使用未定义的变量。
我猜这种情况后,你会发现半冒号更快。