Список всех возможных ошибок PHP
Иногда при кодировании в PHP мы получаем синтаксические или синтаксические ошибки, такие как:
Parse error: syntax error, unexpected T_ECHO, expecting ',' or ';' in /var/www/example/index.php on line 4
Я хотел бы знать, если есть список всех возможных ошибок, которые может выводить интерпретатор PHP. Я искал php.net, но не мог найти такую вещь. Мне нужен этот список для академических целей.
Ответы
Ответ 1
Нет хорошего пути. Даже предложенный grep для zend_Error() бесполезен. Ошибки, которые вы показываете в вопросе, в основном генерируются генератором парсера бизонов, а PHP просто берет его оттуда. Подобные вещи случаются с ошибками, сообщаемыми операционной системой (например, при открытии файлов). Разработчики PHP не могут создать хороший список для них, поскольку ошибки зависят от операционной системы, на которой он работает, и от версий, используемых при компиляции.
Единственное, что grepping для zend_error() и php_Error_docref() может показать вам общий обзор возможных типов ошибок, но далеко не все сообщения об ошибках.
Ответ 2
Я не знаю, существует ли исчерпывающий список возможных ошибок PHP,
но об ошибках парсера вы должны проверить список токенов PHP Parser
http://php.net/manual/en/tokens.php
вот что говорится в руководстве:
Различные части языка PHP представлены внутри типов типами T_SR. PHP выводит идентификаторы, такие как это одно в синтаксических ошибках, таких как "Анализ ошибка: неожиданный T_SR, ожидающий ',' или ';' в script.php в строке 10." Вы должны знать, что T_SR означает. Для всех, кто не знает что, вот таблица с теми идентификаторы, PHP-синтаксис и ссылки в соответствующие места в руководство.
Ответ 3
Я не знаю такого списка, но вы всегда можете скачать или проверить источники php и сделать что-то вроде
find . -name "*.c" | xargs grep "zend_error"
Ответ 4
Если вы ищете список всех возможных типов ошибок, это поможет:
http://www.php.net/manual/en/errorfunc.constants.php
Ответ 5
Это дает 1346 просмотров для меня в последнем источнике PHP (включая дубликаты). Это может быть хороший способ пойти, однако список далеко не полный из-за причин, изложенных @johannes.
С другой стороны, будет очень сложно определить конкретный тип ошибки синтаксического анализа в любом случае, так как я полагаю, что они компилируются парсером во время выполнения и не указаны нигде в источнике.
Можете ли вы рассказать о том, что вам нужно? Возможно, вы можете определить "подкласс" ошибок, которые уже достаточны для вашей потребности.