有时候,而在PHP编码,我们得到解析或语法错误像:列出所有可能的PHP错误
Parse error: syntax error, unexpected T_ECHO, expecting ',' or ';' in /var/www/example/index.php on line 4
我想知道,如果所有可能的错误,PHP解释器的列表可以输出。我搜索了php.net,但找不到这样的东西。我需要这个名单用于学术目的。
有时候,而在PHP编码,我们得到解析或语法错误像:列出所有可能的PHP错误
Parse error: syntax error, unexpected T_ECHO, expecting ',' or ';' in /var/www/example/index.php on line 4
我想知道,如果所有可能的错误,PHP解释器的列表可以输出。我搜索了php.net,但找不到这样的东西。我需要这个名单用于学术目的。
不,没有好方法。即使是建议的zend_Error()的grep也没用。你在问题中显示的错误大多是由bison解析器生成器生成的,而PHP只是从那里生成的。操作系统报告的错误会发生类似的情况(如打开文件时出现错误)。 PHP开发人员无法真正为这些列表生成良好的列表,因为错误取决于正在运行的操作系统和编译时使用的版本。
对于zend_error()和php_Error_docref()的唯一选择可以显示您是可能的错误种类的一般概述,但是不是所有的错误消息。
我不知道这样的列表,但你可以随时下载或检出PHP源,这样做
find . -name "*.c" | xargs grep "zend_error"
我考虑过这个。如果没有关于错误的文档,我将不得不这样做。 – 2010-03-01 10:49:06
我不知道是否存在可能的PHP错误的完整列表, 而是分析器错误,你应该签PHP解析器的列表令牌
http://php.net/manual/en/tokens.php
这里就是手册上说:
Various parts of the PHP language are represented internally by types like T_SR. PHP outputs identifiers like this one in parse errors, like "Parse error: unexpected T_SR, expecting ',' or ';' in script.php on line 10." You're supposed to know what T_SR means. For everybody who doesn't know that, here is a table with those identifiers, PHP-syntax and references to the appropriate places in the manual.
谢谢这个清单对我来说也很有用! – 2010-03-01 10:48:17
-1这很好理解,但它与错误消息有什么关系? – 2010-03-01 10:48:55
@Pekka:这个链接为你提供了按名称标记的列表,所以你可以看到代码中的什么标记调用了一个分析器错误,因此你可以解决你的分析错误,请阅读http页面顶部的简短介绍://php.net/manual/en/tokens。php – 2010-03-01 10:51:14
这给了我最新的PHP源码(包括重复)1346次点击。这可能是一个好的途径,但是由于@johannes提出的原因,名单远远没有完成。另一方面,定义一个特定的类型解析错误无论如何都是非常困难的,正如我想象的那样,它们在运行时由解析器编译,并且不在源码的任何位置列出。
你能详细说明你需要什么吗?也许你可以定义一个已经足够满足你需要的错误的“子类”。
如果你正在寻找所有可能的错误类型的列表,这将有助于: http://www.php.net/manual/en/errorfunc.constants.php
该错误可能只是因为你忘了关你的前行。 – Layke 2010-03-01 10:43:21
@Laykes:我认为你必须再次阅读这个问题;) – 2010-03-01 10:45:22
是的,我故意这样做,以得到一个错误的例子。 我更感兴趣的是获取可能的错误消息的实际列表,而不是解决它们 - 这是另一个问题:) – 2010-03-01 10:46:37