Что такое линтер
Линтер в PHP — это инструмент, который анализирует ваш код без его запуска и ищет:
- ошибки синтаксиса,
- потенциальные баги,
- несоответствия стилю кодирования,
- нарушения стандартов (например, PSR-12).
Задача линтера — сделать код более качественным, читаемым и безопасным.
Виды линтеров и анализаторов в PHP
1. Встроенный линтер PHP (php -l)
PHP сам умеет проверять синтаксис.
php -l index.php
Пример:
<?php
echo "Hello World"
Результат:
Parse error: syntax error, unexpected end of file in index.php on line 2
⚠️ Ограничение: проверяет только синтаксис, логические ошибки или стиль он не найдет.
2. PHP_CodeSniffer (phpcs)
Используется для проверки стиля кода по стандартам.
Установка:
composer require --dev squizlabs/php_codesniffer
Запуск:
vendor/bin/phpcs --standard=PSR12 src/
Пример кода:
<?php
class test{
function myFunc( $x){
return $x+1;
}
}
phpcs выдаст:
ERROR | Expected 1 space after class name; 0 found
ERROR | Method name "myFunc" is not in camel caps format
WARNING | Expected 1 space after opening parenthesis
3. PHP-CS-Fixer
Не просто находит проблемы, а автоматически исправляет код.
Установка:
composer require --dev friendsofphp/php-cs-fixer
Запуск:
vendor/bin/php-cs-fixer fix src/
Пример:
До:
<?php
class test{
function myFunc( $x){
return $x+1;
}
}
После автофикса:
<?php
class Test
{
public function myFunc($x)
{
return $x + 1;
}
}
4. PHPStan
Статический анализатор, проверяет типы и возможные ошибки.
Установка:
composer require --dev phpstan/phpstan
Запуск:
vendor/bin/phpstan analyse src --level=5
Пример:
<?php
function add(int $a, int $b): int {
return $a + $b;
}
echo add("5", "10");
phpstan скажет:
Parameter #1 $a of function add expects int, string given.
5. Psalm
Аналог PHPStan, но с поддержкой аннотаций и более строгой проверкой.
Установка:
composer require --dev vimeo/psalm
vendor/bin/psalm --init
Запуск:
vendor/bin/psalm
Пример:
<?php
/**
* @return int
*/
function getId(): string {
return "42";
}
psalm скажет:
ERROR: InvalidReturnType - getId: Expected int, got string
Сравнение инструментов
| Инструмент | Для чего нужен | Примеры ошибок | Автофикс |
|---|---|---|---|
php -l |
Проверка синтаксиса | Пропущенная ;, незакрытая { |
❌ |
| PHP_CodeSniffer | Проверка стиля кода по стандартам (PSR-12 и др.) | Отступы, пробелы, именование | ❌ |
| PHP-CS-Fixer | Автоматическая правка стиля | Форматирование, пробелы, скобки | ✅ |
| PHPStan | Поиск ошибок типов, недостижимого кода | Передача string вместо int |
❌ |
| Psalm | Более строгая проверка типов и аннотаций | Несоответствие phpdoc и типов | ❌ |
Когда использовать какой инструмент
- ✅
php -l— быстрый чек на синтаксис (обычно в CI/CD). - ✅
phpcs— чтобы проект соответствовал кодстайлу. - ✅
php-cs-fixer— если хотите автоматически исправлять стиль. - ✅
phpstan/psalm— если важна строгая проверка типов и поиск багов на раннем этапе.
Итог
Линтеры и статические анализаторы — это «вторые глаза» разработчика.
Они помогают:
- писать чистый и единообразный код,
- находить баги до запуска,
- ускорять код-ревью.
Лучше всего использовать сочетание инструментов:
phpcs или php-cs-fixer для стиля + phpstan или psalm для проверки логики.