проверка синтаксиса php-кода без php-cli, возможно? - PullRequest
4 голосов
/ 17 февраля 2011

Можно ли проверить синтаксис php-кода (без запуска), аналогично

php-cli -l

при запуске php "обычным" способом (в виде модуля)?

Ответы [ 4 ]

2 голосов
/ 01 марта 2011

Существуют также некоторые расширения PECL, которые по разным причинам анализируют код PHP. Сначала есть BCompiler , который может скомпилировать PHP в байт-код. Поскольку этот шаг требует синтаксического анализа кода PHP, я ожидал бы ошибок, если это не lint. Parsekit позволяет компилировать PHP-код в OP-коды, что в принципе и является вашим желанием. Однако расширение не было выпущено с конца 2009 года, поэтому оно может быть устаревшим. Parse_Tree , к сожалению, не поддерживается с 2007 года, но его целью является анализ файла PHP в AST. Может быть, вы можете получить что-то с этим, после некоторой полировки.

PHP_Parser - это пакет PEAR, который не использует специальные расширения PHP и не пытается анализировать код PHP изнутри PHP. Она помечена альфа и не поддерживается, но может послужить основой для экспериментов.

1 голос
/ 28 февраля 2011

Вы можете попытаться запустить инструмент, подобный PHP Depend от источников, который пытается проанализировать данные файлы PHP в абстрактном синтаксическом дереве. Хотя это может не перехватить все ошибки синтаксического анализатора PHP, оно уже отлавливает довольно много из них.

Вы получаете хорошие метрики программного обеспечения в качестве дополнительного бонуса, если код действителен. :)

0 голосов
/ 01 марта 2011

Можно ли проверить синтаксис php-кода (без запуска), аналогично php-cli -l при запуске php "обычным" способом (в виде модуля)?

Я думаю, что вопрос, который все пропустили, заключается в том, что в синтаксисе PHP нет разницы, запускаете ли вы его как модуль или просто запускаете двоичный файл из оболочки: синтаксис PHP одинаков в обоих случаях. Таким образом, вы также можете просто использовать php -l filename.php, так как это дает тот же результат, что и инструменты, перечисленные выше.

0 голосов
/ 17 февраля 2011

Для получения того же результата, что и php-cli -l, используйте функцию: php_check_syntax

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...