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

问题描述 投票:-1回答:2

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

“未定义的索引:第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

那么在上面的例子中我可以做得更好,不让分号发生?

php condition
2个回答
0
投票

您可以改善编码风格。

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

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

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

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

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


0
投票

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

error_reporting(E_ALL);

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

我猜这种情况后,你会发现半冒号更快。

© www.soinside.com 2019 - 2024. All rights reserved.