Как перестать «колхозить» и начать писать чистый код на PHP
Вы когда-нибудь открывали свой старый PHP-проект и ловили себя на мысли: «Кто это писал? Это же ужас!»? Если да — поздравляю, вы растёте как разработчик. А если вы только начинаете — вы на верном пути, раз читаете эту статью на PythonLib (да, мы любим Python, но PHP тоже заслуживает уважения).
Современный PHP — это не тот «велосипед с костылями», каким его помнят с 2005 года. Сегодня это мощный, строгий и предсказуемый язык. Но чтобы писать на нём быстро и без багов, нужны правильные инструменты PHP разработчика. Без них вы будете тратить часы на поиск лишней запятой или забытой точки с запятой.
В этой статье я расскажу, как собрать идеальный джентльменский набор: IDE, линтеры и форматтеры. Вы узнаете, какие из них реально нужны, а какие — просто модная игрушка. Поехали!
IDE для PHP: не просто редактор, а второй мозг
Выбор IDE для PHP — это как выбор пары обуви для марафона. Можно бежать и в кроссовках за 500 рублей, но ноги скажут «спасибо» только за нормальные. Так и с кодом: можно писать в блокноте, но продуктивность упадёт в разы.
1. PhpStorm — король зверей
Если вы серьёзно занимаетесь PHP, PhpStorm от JetBrains — это стандарт индустрии. Да, он платный (около 200 $/год), но он окупается за первую же неделю. Что он умеет:
- Автодополнение кода с учётом типов (работает даже с трейтами и интерфейсами).
- Встроенный отладчик Xdebug — настройка за 2 клика.
- Рефакторинг: переименование переменной меняет все её вхождения за секунду.
- Подсказки по стандартам PSR-12.
- Интеграция с Composer, Docker, Symfony, Laravel — из коробки.
<?php
// PhpStorm подсветит ошибку, если вы забудете вернуть значение
function getUserName(int $id): string
{
// IDE сразу покажет, что return отсутствует
}
Минус: жрёт оперативку. 8 ГБ RAM — минимум, 16 — комфортно.
2. VS Code — лёгкий и бесплатный
Если вы не готовы платить или у вас слабый ноут — VS Code с расширениями для PHP ваш выбор. Установите:
- PHP IntelliSense — автодополнение и подсветка синтаксиса.
- PHP Debug — отладка через Xdebug.
- PHP Namespace Resolver — автоматические импорты use.
VS Code не такой умный, как PhpStorm, но с хорошей настройкой он закрывает 80% потребностей. А главное — он бесплатный и работает на любом железе.
3. NetBeans — старый, но добрый
Для legacy-проектов или если вы работаете на «слабом» сервере — NetBeans всё ещё жив. Он понимает PHP, HTML, CSS и даже JavaScript. Минус — интерфейс из 2010 года.
Линтеры PHP: ваши личные code-полицейские
Линтеры PHP — это утилиты, которые проверяют код на соответствие стандартам и находят потенциальные ошибки ДО того, как вы запустите скрипт. Без них вы рискуете получить «белый экран смерти» из-за пропущенной точки с запятой.
1. PHP CodeSniffer (PHPCS) — эталон
PHP CodeSniffer — это дедушка всех линтеров. Он проверяет код на соответствие стандартам PSR-1, PSR-2, PSR-12 и другим. Установка через Composer:
composer global require "squizlabs/php_codesniffer=*"
Пример использования:
// Плохо: нет пробелов, фигурные скобки не на месте
if($a==1){
echo 'ok';
}
// PHPCS выдаст ошибки:
// - Expected 1 space after IF
// - Expected 1 space before '{'
// - Expected 1 space after '=='
Вы можете настроить свой набор правил. Например, для Laravel используйте phpcs.xml с правилами PSR-12.
2. PHPStan — детектор логических ошибок
PHPStan идёт дальше: он анализирует типы данных и находит скрытые баги. Например, если вы передаёте строку туда, где ожидается int — PHPStan предупредит.
<?php
function calculateTax(int $price): float
{
return $price * 0.2;
}
// PHPStan скажет: "Parameter #1 $price of function expects int, string given"
calculateTax('100 рублей');
Уровни строгости от 0 (минимум) до 9 (паранойя). Для старта хватит уровня 6.
3. PHPMD — детектор «грязного» кода
PHPMD (PHP Mess Detector) находит антипаттерны: слишком длинные методы, сложные условия, избыточные зависимости. Пример:
// PHPMD скажет: "Avoid excessively long variable names like $thisIsMySuperLongVariableNameThatNobodyCanRead"
Используйте его вместе с PHPStan — они отлично дополняют друг друга.
Форматтеры PHP: чтобы код выглядел как у профи
Споры о том, ставить ли пробел перед скобкой — бессмысленны, если у вас есть форматтеры PHP. Они приводят код к единому стилю автоматически. Забудьте про ручное выравнивание!
1. PHP-CS-Fixer — золотой стандарт
PHP-CS-Fixer — это швейцарский нож для форматирования. Он умеет всё: от расстановки пробелов до сортировки use-импортов. Установка:
composer global require friendsofphp/php-cs-fixer
Создайте файл .php-cs-fixer.php в корне проекта:
<?php
$finder = PhpCsFixer\Finder::create()
->in(__DIR__)
->exclude('vendor');
return (new PhpCsFixer\Config())
->setRules([
'@PSR12' => true,
'ordered_imports' => true,
'no_unused_imports' => true,
])
->setFinder($finder);
Запуск одной командой:
php-cs-fixer fix
Всё! Ваш код теперь соответствует PSR-12, а импорты