Да, в экосистеме PHP, включая фреймворки Laravel и Yii, существуют инструменты, аналогичные Prettier и ESLint, которые помогают форматировать код, проверять его на ошибки и поддерживать единый стиль. Основные инструменты для PHP — это PHP CS Fixer (форматирование) и PHP_CodeSniffer (линтинг). Для более современной и мощной проверки стиля и ошибок также используется Psalm или PHPStan (статический анализ).
Ниже приведена подробная инструкция по настройке этих инструментов в PHP-проекте (Laravel, Yii) и их интеграции с VS Code, включая автоматическое форматирование и линтинг при сохранении.
- PHP CS Fixer: Это популярный инструмент для автоматического форматирования PHP-кода в соответствии с заданными стандартами кодирования (например, PSR-12, Laravel, Symfony и т.д.). Он исправляет отступы, пробелы, порядок импортов и многое другое.
- Prettier с плагином для PHP: Prettier также поддерживает PHP через плагин
prettier-plugin-php, но он менее популярен в PHP-сообществе по сравнению с PHP CS Fixer, так как последний более настраиваемый и лучше интегрируется с PHP-фреймворками.
- PHP_CodeSniffer (phpcs): Это инструмент для проверки стиля кода (code sniffing). Он проверяет код на соответствие стандартам кодирования, таким как PSR-2, PSR-12, или кастомным правилам. Также включает инструмент
phpcbfдля автоматического исправления ошибок. - Psalm: Инструмент статического анализа для PHP, который проверяет код на ошибки, типы и потенциальные баги. Очень популярен в Laravel-сообществе.
- PHPStan: Еще один инструмент статического анализа, аналогичный Psalm, но с немного другим подходом. Часто используется в Yii и других проектах.
Перед настройкой VS Code установите необходимые инструменты в вашем проекте. Мы будем использовать PHP CS Fixer для форматирования и PHP_CodeSniffer для линтинга, так как они наиболее популярны и хорошо интегрируются с Laravel и Yii.
Убедитесь, что у вас установлен PHP (скачать можно с php.net). Проверьте версию:
php -vComposer — это менеджер зависимостей для PHP, который понадобится для установки инструментов. Убедитесь, что он установлен (скачать можно с getcomposer.org). Проверьте версию:
composer --versionУстановите PHP CS Fixer как зависимость разработки в вашем проекте:
composer require --dev friendsofphp/php-cs-fixerПосле установки вы сможете запускать PHP CS Fixer через ./vendor/bin/php-cs-fixer.
Установите PHP_CodeSniffer как зависимость разработки:
composer require --dev squizlabs/php_codesnifferПосле установки вы сможете запускать phpcs (для проверки) и phpcbf (для исправления) через ./vendor/bin/phpcs и ./vendor/bin/phpcbf.
Для использования PHP CS Fixer и PHP_CodeSniffer создайте файлы конфигурации в корне проекта.
-
Настройка PHP CS Fixer:
-
Создайте файл
.php-cs-fixer.dist.phpв корне проекта. Пример конфигурации для Laravel или Yii (с использованием стандарта PSR-12):<?php $finder = PhpCsFixer\Finder::create() ->in(__DIR__) ->exclude('vendor') ->exclude('storage') ->exclude('bootstrap/cache') ->name('*.php') ->notName('*.blade.php') // Исключаем Blade-шаблоны в Laravel ->ignoreDotFiles(true) ->ignoreVCS(true); return (new PhpCsFixer\Config()) ->setRules([ '@PSR12' => true, // Используем стандарт PSR-12 'array_syntax' => ['syntax' => 'short'], // Короткий синтаксис для массивов 'ordered_imports' => ['sort_algorithm' => 'alpha'], // Сортировка импортов 'no_unused_imports' => true, // Удаление неиспользуемых импортов 'trailing_comma_in_multiline' => true, // Запятая в многострочных массивах ]) ->setFinder($finder);
-
Для Laravel можно добавить дополнительные правила, например, для форматирования Blade-шаблонов (если используете
laravel/pint, см. ниже).
-
-
Настройка PHP_CodeSniffer:
-
Создайте файл
phpcs.xmlв корне проекта. Пример конфигурации для PSR-12:<?xml version="1.0"?> <ruleset name="MyProject"> <description>Правила кодирования для проекта</description> <file>.</file> <exclude-pattern>vendor/*</exclude-pattern> <exclude-pattern>storage/*</exclude-pattern> <exclude-pattern>bootstrap/cache/*</exclude-pattern> <exclude-pattern>*.blade.php</exclude-pattern> <arg name="extensions" value="php"/> <rule ref="PSR12"/> </ruleset>
-
Этот файл указывает, какие файлы проверять и какие стандарты использовать.
-
Если вы работаете с Laravel, вы можете использовать Laravel Pint — официальный инструмент форматирования от Laravel, который основан на PHP CS Fixer, но с предустановленными правилами для Laravel. Установите его:
composer require --dev laravel/pintПосле установки вы сможете запускать Pint через ./vendor/bin/pint.
Для удобства добавьте команды для форматирования и линтинга в composer.json:
{
"scripts": {
"format": "vendor/bin/php-cs-fixer fix",
"lint": "vendor/bin/phpcs",
"lint:fix": "vendor/bin/phpcbf",
"pint": "vendor/bin/pint" // Только для Laravel
}
}Теперь вы можете запускать форматирование и линтинг командами composer format, composer lint, composer lint:fix или composer pint (для Laravel).
Теперь настроим VS Code для автоматического форматирования и линтинга при сохранении, а также для отображения ошибок в реальном времени.
- Откройте панель расширений в VS Code (
Ctrl+Shift+X). - Установите следующие расширения:
- PHP Intelephense (разработчик:
bmewburn.vscode-intelephense-client) — мощное расширение для автодополнения, анализа кода и поддержки PHP. - PHP CS Fixer (разработчик:
junstyle.vscode-php-cs-fixer) — для интеграции PHP CS Fixer. - PHP_CodeSniffer (разработчик:
ikappas.phpcs) — для интеграции PHP_CodeSniffer. - Laravel Blade Snippets (разработчик:
onecentlin.laravel-blade) — для поддержки Blade-шаблонов в Laravel (опционально).
- PHP Intelephense (разработчик:
После установки перезапустите VS Code, чтобы активировать расширения.
Чтобы код автоматически форматировался с помощью PHP CS Fixer (или Laravel Pint) при сохранении:
-
Откройте настройки VS Code (
Ctrl + ,). -
Найдите настройку
Editor: Format On Saveи включите ее (если еще не включена). -
Настройте PHP CS Fixer как форматтер:
- Откройте файл настроек VS Code в формате JSON:
- Нажмите
Ctrl + Shift + P, введите "Preferences: Open Settings (JSON)" и выберите этот пункт. - Или откройте файл вручную:
C:\Users\<ВашПользователь>\AppData\Roaming\Code\User\settings.json(в Windows).
- Нажмите
- Откройте файл настроек VS Code в формате JSON:
-
Добавьте следующие настройки в
settings.json:{ "editor.formatOnSave": true, "php-cs-fixer.executablePath": "${workspaceFolder}/vendor/bin/php-cs-fixer", "php-cs-fixer.formatHtml": true, "php-cs-fixer.onsave": true, "[php]": { "editor.formatOnSave": true, "editor.defaultFormatter": "junstyle.php-cs-fixer" } }Объяснение настроек:
"editor.formatOnSave": true— включает форматирование при сохранении для всех типов файлов."php-cs-fixer.executablePath": "${workspaceFolder}/vendor/bin/php-cs-fixer"— указывает путь к исполняемому файлу PHP CS Fixer в вашем проекте (если он установлен через Composer)."php-cs-fixer.formatHtml": true— включает форматирование HTML внутри PHP-файлов (например, в Blade-шаблонах для Laravel)."php-cs-fixer.onsave": true— включает форматирование PHP CS Fixer при сохранении."[php]": { ... }— задает настройки форматирования только для PHP-файлов, чтобы избежать конфликтов с другими языками.
Примечание для Laravel Pint: Если вы используете Laravel Pint вместо PHP CS Fixer, настройте его как форматтер. Установите расширение Laravel Pint (если доступно) или используйте PHP CS Fixer с кастомной командой. Например:
{ "editor.formatOnSave": true, "[php]": { "editor.formatOnSave": true, "editor.defaultFormatter": "junstyle.php-cs-fixer" }, "php-cs-fixer.executablePath": "${workspaceFolder}/vendor/bin/pint", "php-cs-fixer.formatHtml": true, "php-cs-fixer.onsave": true }
Чтобы ошибки линтинга отображались в реальном времени и автоматически исправлялись при сохранении с помощью PHP_CodeSniffer:
-
Убедитесь, что PHP_CodeSniffer установлен (см. шаг 2.4 выше).
-
Настройте расширение PHP_CodeSniffer в VS Code:
- Откройте настройки VS Code (
Ctrl + ,). - В строке поиска введите "phpcs".
- Найдите
PHP CodeSniffer: Enableи включите (чтобы активировать расширение). - Найдите
PHP CodeSniffer: Executable Pathи укажите путь кphpcs, например:${workspaceFolder}/vendor/bin/phpcs. - Найдите
PHP CodeSniffer: Autofix On Saveи включите, чтобы автоматически исправлять ошибки при сохранении.
- Откройте настройки VS Code (
-
Добавьте настройки в
settings.jsonдля более точной конфигурации:{ "phpcs.enable": true, "phpcs.executablePath": "${workspaceFolder}/vendor/bin/phpcs", "phpcs.standard": "PSR12", "phpcs.autoFixOnSave": true }Объяснение настроек:
"phpcs.enable": true— включает расширение PHP_CodeSniffer."phpcs.executablePath": "${workspaceFolder}/vendor/bin/phpcs"— указывает путь к исполняемому файлуphpcs."phpcs.standard": "PSR12"— указывает стандарт кодирования (можно заменить на путь к вашемуphpcs.xml, например,"${workspaceFolder}/phpcs.xml")."phpcs.autoFixOnSave": true— включает автоматическое исправление ошибок с помощьюphpcbfпри сохранении.
Чтобы ошибки линтинга отображались в редакторе в реальном времени (подчеркивание красным, подсказки и т.д.):
- Убедитесь, что расширение PHP_CodeSniffer активно:
- Внизу в статус-баре VS Code должен быть значок PHP_CodeSniffer (если он не отображается, проверьте, включено ли расширение).
- Убедитесь, что PHP Intelephense активно:
-
PHP Intelephense предоставляет дополнительную диагностику и автодополнение. Убедитесь, что оно включено в настройках:
- Откройте настройки (
Ctrl + ,), найдите "intelephense" и убедитесь, что расширение активно.
- Откройте настройки (
-
Добавьте в
settings.json:{ "intelephense.diagnostics.enable": true, "intelephense.format.enable": false // Отключаем форматирование Intelephense, чтобы избежать конфликтов }
-
Если вы работаете с Laravel, настройте поддержку Blade-шаблонов:
- Убедитесь, что расширение Laravel Blade Snippets установлено.
- Настройте форматирование Blade-шаблонов:
-
Добавьте в
settings.json:{ "files.associations": { "*.blade.php": "html" }, "[blade]": { "editor.formatOnSave": true, "editor.defaultFormatter": "junstyle.php-cs-fixer" } } -
Если вы используете Laravel Pint, он автоматически форматирует Blade-шаблоны. Убедитесь, что в
.php-cs-fixer.dist.phpили конфигурации Pint включена поддержка Blade.
-
Для удобства можно настроить горячие клавиши для выполнения линтинга или форматирования вручную:
-
Откройте панель команд (
Ctrl + Shift + P) и выберите "Preferences: Open Keyboard Shortcuts (JSON)". -
Добавьте свои сочетания клавиш, например:
[ { "key": "ctrl+alt+l", "command": "phpcs.fix", "when": "editorTextFocus && editorLangId == 'php'" }, { "key": "ctrl+alt+f", "command": "editor.action.formatDocument", "when": "editorTextFocus && editorLangId == 'php'" } ]Ctrl+Alt+L— запуск автоматического исправления PHP_CodeSniffer.Ctrl+Alt+F— запуск форматирования документа.
Чтобы минимизировать отклонение коммитов из-за ошибок линтинга, убедитесь, что VS Code работает в связке с Git хуками (например, настроенными через husky, если вы используете его, или через стандартные Git хуки). Если вы настроили автоматическое исправление при сохранении, большинство ошибок будет исправлено до того, как вы сделаете коммит.
-
Настройте Git хук
pre-commitдля запускаphpcsиphp-cs-fixer:-
Создайте файл
.git/hooks/pre-commit(или используйтеhusky, если он настроен). -
Добавьте в него:
#!/bin/sh ./vendor/bin/php-cs-fixer fix ./vendor/bin/phpcs if [ $? -ne 0 ]; then echo "Linting failed, commit aborted" exit 1 fi
-
Сделайте файл исполняемым (если вы работаете в Windows, используйте Git Bash или WSL для выполнения этой команды):
chmod +x .git/hooks/pre-commit
-
-
Проверьте, что при сохранении файлов в VS Code ошибки исправляются автоматически:
- Откройте PHP-файл, добавьте код с ошибками (например, неправильное форматирование или нарушение стандарта PSR-12).
- Нажмите
Ctrl + S(сохранить) и убедитесь, что код форматируется, а ошибки исправляются.
Если что-то работает не так, вот несколько шагов для устранения неполадок:
-
Форматирование не работает при сохранении:
- Убедитесь, что PHP CS Fixer установлен и доступен в PATH (
./vendor/bin/php-cs-fixer --version). - Проверьте, что в настройках VS Code указан правильный путь к исполняемому файлу (
php-cs-fixer.executablePath). - Убедитесь, что опция
editor.formatOnSaveвключена.
- Убедитесь, что PHP CS Fixer установлен и доступен в PATH (
-
Линтинг не показывает ошибки в редакторе:
- Убедитесь, что PHP_CodeSniffer установлен и доступен в PATH (
./vendor/bin/phpcs --version). - Проверьте, что в настройках VS Code указан правильный путь к исполняемому файлу (
phpcs.executablePath). - Перезапустите сервер PHP_CodeSniffer: нажмите
Ctrl + Shift + P, выберите "PHP CodeSn
- Убедитесь, что PHP_CodeSniffer установлен и доступен в PATH (