Laravel Pint — средство исправления стиля кода

Источник: «Laravel Pint»
Долгожданный ажиотаж наконец-то закончился, Laravel выпустили консольное приложение с открытым исходным кодом и мы получили его в свои руки. Представляем Laravel Pint...

Из файла readme: Laravel Pint — средство исправления стиля PHP-кода с нулевой зависимостью для минималистов, созданное поверх PHP-CS-Fixer.

Как только я прочитал это, я был взволнован, я имею в виду очень взволнован. В современном PHP мы прошли этап оттачивания мастерства, делая код более строгим и лучше тестируемым, гарантируя, что у нас есть согласованный стиль кода. Всё началось ещё когда был сформирован PHP-FIG и начали выпускать PSR, и это набрало силу с помощью фреймворков, имеющих свои собственные опубликованные правила стиля. Этот пакет ничем не отличается и будет автоматически тестировать ваш стиль кода на основе предустановленных настроек.

Чтобы начать работу с этим пакетом, установите его с помощью composer:

composer require laravel/pint --dev

После установки ему не требуется настройка, вы можете просто запустить его:

./vendor/bin/pint

Без конфигурации, настройки, без раздумий и усилий — мой проект мгновенно оценивается на соответствие стилю PSR-12 и автоматически исправляется. Волшебный. Поддержание вашего кода в чистоте и согласованности иногда требует усилий и размышлений о том, как получить эту настройку — какие правила вам нужно реализовать. Или с помощью PHP CS Fixer, вам нужно было создавать файл конфигурации, а затем пройти и создать finder для добавления правил в PHP файл в виде массива. Всё быстро запуталось, верно?

Больше нет. Если вы создадите файл pint.json в корне вашего проекта, он просто загрузит его и прочитает конфигурацию — в противном случае придерживайтесь значений по умолчанию. Вся конфигурация выполняется с использованием JSON, что делает её проще в использовании и более читабельной.

Давайте быстро рассмотрим новую конфигурацию pint с использованием предварительных установок. Но давайте рассмотрим, как это сделать с новым Laravel проектом, поэтому создайте новый проект:

laravel new pint-demo

Откройте новый проект в терминале и установите pint:

composer require laravel/pint --dev

С новым приложением Laravel давайте настроим базовую конфигурацию для Laravel. Создайте файл pint.json и добавьте:

{
"preset": "laravel"
}

Теперь запустим pint:

./vendor/bin/pint

Вы должны увидеть вывод аналогичный приведённому ниже:

Laravel pint первый запуск

Мы стартовали 🚀

Итак, давайте изменим preset на PSR-12 и посмотрим результат:

{
"preset": "psr12"
}

Перезапустите pint и посмотрите на результат:

./vendor/bin/pint

Вы должны увидеть следующий вывод:

Laravel pint PSR-12

Давайте немного проинспектируем его. В нём реализованы такие правила, как single_trait_insert_per_statement, braces и new_with_braces. Что если мы хотим немного изменить их? Что ж, мы можем легко включать и выключать правила. Давайте отключим braces в нашем pint.json:

{
"preset": "psr12",
"rules": {
"braces": false
}
}

Вот оно! Легко настроить как вы хотите свой стиль кода. Больше никакого беспорядочно PHP кода и массивов для настройки вашего стиля кода. Итак, давайте перезапустим pint, но на этот раз мы хотим сделать пробный прогон, посмотреть, что изменится:

./vendor/bin/pint —test
Laravel pint пробный прогон

Потрясающе, верно? Хороший чистый вывод, пробный прогон, проверка того, что не получится и почему! Так что же произойдёт, если мы захотим получить немного больше информации? Я исправил указанные выше файлы и вернулся к миграции — и отменил эти изменения, чтобы мы могли их протестировать. Давайте снова сделаем пробный прогон, но на этот раз мы хотим получить подробный вывод, используя флаг -v:

Laravel pint пробный прогон с подробным выводом

Мы получили отличный результат, как и при использовании GitHub, для внесения изменений. Таким образом, можно увидеть проблему со стилем кода, за что её улавливают и какие изменения произойдут, если мы её исправим — и это всё с помощью одной довольно простой команды.

Не знаю как у вас, но это обязательный пакет для всех моих будущих проектов, пакетов и всего над чем работаю.

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

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

Laravel: Где использовать middleware?

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

Laravel: Параметры маршрута из нескольких слов