理解缩进的 php 语法检查器

标签 php syntax editor lint

<分区>

考虑这个 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 行),而不是在脚本末尾。

最佳答案

这种问题几乎是无解的。编译器会尽最大努力告诉您错误发生的位置,但它不可能做到万无一失。从本质上讲,它会一直扫描文件,直到它到达那一刻必须无效的东西;但这并不意味着那是你搞砸的地方。这只是意味着,在您犯错的那一刻,随后的语法在技术上仍然是有效的(即使完全愚蠢),直到编译器厌恶地放弃为止。

因此,在您的情况下,语法在第 14 行之前在技术上没有问题,即使代码偏离了您在第 9 行中的意图。解析器无法知道这一点。

由于缩进是可选的并且会被解析器忽略,因此几乎肯定会造成比考虑缩进所值得的更多的麻烦。如果是这样,它会在没有错误的地方不断出现错误。毕竟,缩进在语法上没有意义的一个后果是有不止一种合理的缩进方式。

我认为,您最好的选择是使用自动为您添加缩进的 IDE。 (当然可以配置 Eclipse 来为您整理缩进。)如果您这样做,您会在编写第 11 行时发现它比您预期的要缩进更多,这会给您一个线索,您忘记了右括号。

关于理解缩进的 php 语法检查器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25700136/

相关文章:

c - 带c程序的图形编辑器(编程挑战110105)

php在colspan中显示记录

php - 使用CSS显示隐藏内容和添加图片效果

php - 为什么这个mysqli准备好的语句不起作用?

perl - 为什么 'Use of "shift"没有括号是由 Perl 发出的不明确的警告?

html - 用于创建数学方程式的编辑器

php - 单选按钮的数据类型

c - 基于变量初始化状态的逻辑参数

powershell - 如何使用需要从命令提示符/批处理文件引用的参数来调用 PowerShell Start-Process 命令?

java - Eclipse 插件 - 访问编辑器