PHP 8.3: PHP CLI Lint (php -l) проверка нескольких файлов

В CLI PHP предусмотрена функция линтинга, которая проверяет переданное имя файла на наличие синтаксических ошибок. Это удобно для быстрой проверки PHP-файла или фрагмента перед выполнением.
php -l my-file.php
No syntax errors detected in my-file.php

До версии PHP 8.3 не было возможности проверять несколько PHP-файлов в одном вызове; независимо от количества файлов, PHP CLI проверял только первый файл:

php -l file1.php file2.php
No syntax errors detected in file1.php

Начиная с версии PHP 8.3, появилась возможность передавать несколько PHP-файлов, и PHP CLI проверяет все в одном вызове.

php -l file1.php file2.php
No syntax errors detected in file1.php
No syntax errors detected in file2.php

Если в каком-либо из предоставленных файлов линтером обнаружены ошибки, то он выдаёт ошибку и переходит к остальному списку. Если какой-либо из файлов не прошёл проверку, программа завершает работу с ошибкой.

Поддерживаются шаблоны поиска

Помимо передачи нескольких имён файлов по отдельности, можно также использовать шаблон поиска для проверки нескольких файлов:

php -l src/*.php src/**/*.php

Коды выхода

  • Если какой-либо файл оказался недоступным, то код выхода будет равен 1.
  • Если какой-либо из файлов не прошёл проверку, то код выхода будет равен 255.
  • При наличии обоих условий ошибки код выхода будет равен 1.

Влияние на обратную совместимость

До версии PHP 8.3 PHP CLI молча игнорировал дополнительные файлы, передаваемые на проверку. Для шаблонов поиска он использовал только первый файл.

Для PHP-приложений, работающих только на PHP 8.3+, появилась возможность быстро проверить несколько PHP-файлов или всю кодовую базу, не прибегая к многократному вызову линтера (например, командой find) или использованию сторонних инструментов.

Сторонние инструменты, такие как php-parallel-lint/PHP-Parallel-Lint, могут обеспечить параллельную проверку, работающую на нескольких версиях PHP.


Реализация

Дополнительные материалы

Предыдущая Статья

Как работает Интернет

Следующая Статья

Руководство по стилизации скроллбара (полосы прокрутки) в CSS