<? phpukraine ІНСТРУМЕНТИ
Пошук по платформі

Перевірка синтаксису PHP онлайн

Парсить код для обраної версії PHP і показує рядок та колонку помилки. Код не виконується.

НА СЕРВЕРІ PHP 8.4 NEW ТЕКСТ → ТЕКСТ
РОБОЧА ЗОНА
ЩО РОБИТЬ

Знаходить помилку синтаксису до того, як її знайде продакшен

Зайва дужка, пропущена крапка з комою чи конструкція з новішої версії, ніж стоїть на сервері: усе це видно лише під час запуску, а на продакшені воно виглядає як біла сторінка. Вставте файл або фрагмент, виберіть версію PHP, і за секунду побачите або «синтаксис правильний», або точне місце помилки.

ЯК ЦЕ ПРАЦЮЄ В PHP

Парсер будує з коду дерево (AST) і зупиняється на першій конструкції, яка не відповідає граматиці вибраної версії. Той самий підхід використовують PHPStan, Rector і PHP-CS-Fixer. Локально те саме дає php -l, а в CI варто мати обидва кроки: спочатку lint усіх файлів, потім статичний аналіз.

// у консолі проєкту:
// php -l app/Http/Controllers/JobController.php
// No syntax errors detected in app/Http/Controllers/JobController.php

// або програмно, як робить цей інструмент:
use PhpParser\ParserFactory;
use PhpParser\PhpVersion;

$parser = (new ParserFactory)->createForVersion(PhpVersion::fromString('8.4'));

try {
    $parser->parse($code);
} catch (\PhpParser\Error $e) {
    echo $e->getRawMessage(), ' у рядку ', $e->getStartLine();
}
ОБЕРЕЖНО

Це перевірка синтаксису, а не запуск. Код парситься бібліотекою nikic/php-parser і ніколи не виконується, тому сюди можна вставляти будь-що. Але саме тому інструмент не бачить помилок часу виконання: невизначені функції, неправильні типи аргументів, відсутні класи. Для цього є PHPStan.

ПИТАННЯ

Що питають про цей інструмент

Парсер розуміє синтаксис усіх версій до 8.5 включно, а вибір версії впливає на конструкції, що змінили значення між релізами: наприклад, нові зарезервовані слова або те, як читається код без тегів. Він не заборонить property hooks для 8.2: чи підтримує ваша версія конкретну конструкцію, перевіряйте в документації або php -l на самому сервері.

ДАЛІ ПО ТЕМІ