考虑这个PHP脚本:
<?php // 1
// 2
function foo() { // 3
// 4
$foo = 1; // 5
// 6
if("something") { // 7
$bar = 2; // 8
// 9 = note the missing brace
// 10
$baz = 4; // 11
// 12
} // 13
?> // 14
运行它时,您会收到解析错误
Parse error: syntax error, unexpected end of file in ... on line 14
是否有用于php的工具,该工具足够聪明,可以分析我的缩进,并告诉我实际的问题在第9行(或者就此而言,在第11行),而不是在脚本的末尾.
解决方法:
这种问题几乎是无法解决的.编译器会尽力告诉您发生错误的位置,但是它不能做到无误.从本质上讲,它将继续扫描文件,直到到达某个必须无效的位置为止.但这并不意味着那是您搞砸的地方.这只是意味着在您犯错的那一刻,遵循的技术上仍然是有效的语法(即使完全愚蠢),直到编译器厌恶地放弃为止.
因此,在您的情况下,即使代码偏离了第9行中的预期,在第14行之前,该语法在技术上还是可以的.解析器无法知道这一点.
由于缩进是可选的并且被解析器忽略,因此几乎肯定会引起更多麻烦,而不是将缩进考虑在内.如果确实如此,它将在没有错误的地方不断提出错误.毕竟,缩进在语法上没有意义的一个结果是,存在多种合理的缩进方式.
我认为,最好的选择是使用自动为您添加缩进的IDE. (当然可以将Eclipse配置为为您整理缩进.)如果这样做,您会在编写第11行时发现它想缩进的幅度超出了您的预期,这将为您提供线索忘了一个大括号.