解决PHP解析错误

时间:2009-08-24 18:03:50

标签: php

编写PHP代码时,如果您不记得之前编辑的部分,可能会导致某些人难以追踪解析错误。我很想知道任何有见地的方法来找出你可能发现的这些错误。

示例:意外';',在第877行的someclass.php中期待T_FUNCTION

这个模糊的错误指出你有意外;在包含877行PHP代码的类中,错误肯定不在最后一行。错误消息是否具有误导性?你从哪里以及如何开始寻找,除了从顶部开始,只是试图找到扫描每一行代码的有问题的地方。

7 个答案:

答案 0 :(得分:5)

首先,当你输入代码时,我会使用一个动态突出显示PHP错误的编辑器,例如,Eclipse PDT (这是非常强大,主动维护,和免费,以及OSS) - 它将帮助几乎立即检测到一些错误,而无需执行代码。

如果您正在使用它的Subversion插件(在Eclipse中集成SVN访问),它还可以显示它所谓的“快速差异”:未提交到SVN的修改行的边距突出显示 - 它有助于检测自上次提交后您更改的内容。


但是请注意,因为它基于Eclipse,需要一台功能非常强大的计算机(我想说需要2GB RAM的双核,如果你还想使用其他软件,1 GB通常是不够的同时^^)


然后,当您在PHP中编程很长一段时间后,您可能能够更快/更好地理解这些消息,并且知道在哪里查看; - )

答案 1 :(得分:2)

如果您使用的是某些控制版本系统,则可以查找文件/类的实际版本和旧版本之间的差异。

答案 2 :(得分:2)

这类错误通常是if,switch,while,do,function,class等的“{”未关闭。

答案 3 :(得分:2)

无论使用何种编辑器,您都可以进行频繁的语法检查:

php -l file.php

请注意,我使用“频繁”一词。如果您使用vim,您可能会在.vimrc文件中找到以下内容:

map <F12> <ESC>:!php -l %<CR>

随时点击F12即可快速检查语法。

答案 4 :(得分:1)

在编写代码时尽可能频繁地运行代码。每次执行之间添加的代码行越少,新错误的搜索空间就越小。

如果自上次加载页面以来我只编辑了5行877行文件,那么查找错误的速度可能比我编辑100行时快得多。

答案 5 :(得分:1)

我发现PHP关于语法错误的报告非常好,但鉴于语法错误几乎可以是任何事情,显然存在可能性的限制。通常,您的错误可能接近报告的行。例如,在这种情况下,我会假设你做了类似的事情:

class Foo {
  function blah() {
  };
}

或者也许:

class Foo {
  protected $foo;;
}

在这两种情况下,分号都是非法的。

答案 6 :(得分:0)

Zend Studio有一个很棒的调试工具,允许您使用各种选项,包括设置断点,单步执行代码以及检查变量/参数。当然,所有这些都需要付出代价。 =(