有时,在PHP编码时,我们会得到解析或语法错误,如:
Parse error: syntax error, unexpected T_ECHO, expecting ',' or ';' in /var/www/example/index.php on line 4
我想知道,如果有一个PHP解释器可以输出的所有可能错误的列表。我搜索过php.net,但找不到这样的东西。我需要这个列表用于学术目的。
答案 0 :(得分:10)
没有好方法。甚至为zend_Error()建议的grep也没用。您在问题中显示的那种错误主要是由bison解析器生成器生成的,PHP只是从那里获取它。操作系统报告的错误也会发生类似的事情(比如打开文件时的错误)。 PHP开发人员无法为这些生成良好的列表,因为错误取决于它运行的操作系统和编译时使用的版本。
对zend_error()和php_Error_docref()的唯一重要事项可以向您显示可能的错误类型的概述,但到目前为止并非所有错误消息。
答案 1 :(得分:6)
我不知道是否存在可能的PHP错误的综合列表, 但是关于解析器错误,你应该检查PHP解析器令牌列表
http://php.net/manual/en/tokens.php
这是手册所说的内容:
PHP语言的各个部分由类型之类的内部表示 T_SR。 PHP输出标识符 这个解析错误,如“解析 错误:意外T_SR,期待',' 要么 ';'在第10行的script.php中。“ 你应该知道什么是T_SR 手段。对于每个不认识的人 那,这是一张表 标识符,PHP语法和引用 到了适当的地方 手册。
答案 2 :(得分:2)
我不知道这样的列表,但您可以随时下载或检查php源代码并执行类似
的操作 find . -name "*.c" | xargs grep "zend_error"
答案 3 :(得分:2)
如果您要查找所有可能错误类型的列表,这将有助于: http://www.php.net/manual/en/errorfunc.constants.php
答案 4 :(得分:0)
这为我提供了最新PHP源代码(包括重复项)的1346次点击。这可能是一个很好的方法,但由于@johannes概述的原因,该列表远未完成。
另一方面,无论如何定义解析错误的特定类型将非常困难,因为我认为它们在运行时由解析器编译,并且未在源代码中的任何位置列出
你能详细说明你需要的东西吗?也许你可以定义一个已经足够满足你需要的错误的“子类”。