• Час читання ~1 хв
  • 20.01.2023

Laravel Pint — гаряча новинка від команди Laravel. Чудова обгортка PHP CS Fixer, яка є моїм інструментом стандартизації коду.

Раніше я писав про випуск Laravel Pint коли він був уперше випущений. За замовчуванням він слідуватиме за laravel стандарт із коробки, спеціальний стандарт від команди Laravel.

Але що ми робимо, якщо хочемо чогось іншого? Давайте трохи зануримося.

Якщо ви прочитаєте документацію, вона дуже інформативна щодо того, що ви можете робити з Laravel Pint. Ви можете реалізувати багато правил у зручному файлі JSON, але які з них працюють добре, і що потрібно робити?

Я збираюся провести вас через мою особисту конфігурацію Laravel Pint і поясню, що і чому я вибираю ці налаштування.

Вирівняти багаторядкові коментарі

Це правило align_multiline_comment will всеow you to fix any comments that I call "borked". They have all gone out of alignment and look weird. It is ні a significant thing in terms of your code, but it is an annoyance when reading through it as your eyes will be drawn to it instead of what you want to focus on.

Відступ масиву

Правило відступ_масиву дозволить вам виправити будь-які масиви, які ви створюєте, які знову ж таки з певної причини стали «забитими». Ще одне правило очищення коду, яке прибере місця, де пробіли можуть використовуватися не в тому місці тощо тощо.

Синтаксис масиву

The синтаксис_масиву це правило, яке вам може не знадобитися, залежно від віку вашого коду. Це правило змінить старе масив() синтаксис до нового [] синтаксис. Я зберігаю це на випадок, якщо у мене є старий код або я працюю з кількома розробниками, які можуть увійти в старі звички.

Порожній рядок після простору імен

The порожній_рядок_після_простір_імен rule — це правило господарювання, яке я використовую, щоб переконатися, що під оголошенням простору імен у будь-якому класі завжди є порожній рядок.

Порожній рядок після початкового тегу

The blank_line_after_opening_tag правило подібне до попереднього правила, але вимагає порожнього рядка після початкового тегу PHP. Мені подобається, щоб мій код був упорядкованим та одноманітним – ці правила дозволяють це.

Об’єднайте послідовні елементи

The combine_consecutive_issets це те правило, яке навчило мене, що я можу використовувати більше ніж один аргумент у перевірці isset, що було для мене чимось новим. Це перетворить будь-який код, який поєднує одну або більше перевірок isset, в одну чисту перевірку.

// before
if (isset($a) && isset($b))

// after
if (isset($a, $b))

Об'єднати послідовні скасування

The combine_consecutive_unsets правило схоже на наведене вище правило, про те, про що я не знав, що можу зробити - і змушує мене використовувати кращий код.

// before
unset($a);
unset($b);

// after
unset($a, $b);

Concat Space

The concat_space правило одне з моїх улюблених. Це примусово створює пробіли між будь-якими конкатенаціями рядків - це одна з речей, яку я ненавиджу не бачити. Мені подобається, щоб у моєму коді було місце, а не було здавлено, як простір уповільнює його.

// before
$name = $request->get('name');
$message = 'Hello '.$name;

// after
$message = 'Hello ' . $name;

Оголошення круглих дужок

The заявляти_parentheses Правило є майже протилежним до наведеного вище правила. Скрізь, де я використовую a declare я хочу переконатися, що навколо нього немає непотрібних прогалин.

// before
declare( strict_type = 1 );

// after
declare(strict_types=1);

Оголошення строгих типів

The declare_strict_types правило для мене є обов'язковим. Зважаючи на кількість використання типів, які я використовую у своєму коді, я також хочу переконатися, що суворе введення ввімкнено. Це зручне правило, щоб закріпити це у вашій кодовій базі, не пам’ятаючи про те, щоб додавати його кожного разу. Чудово підходить для Laravel, оскільки вам не потрібно змінювати свої заглушки, щоб додати їх!

declare(strict_types=1);

Явна рядкова змінна

The явна_рядкова_змінна це те правило, яке я люблю додавати, оскільки це робить мій код набагато легшим для читання. Скрізь, де ви використовуєте неявні змінні у своєму коді, це зробить їх явними, як показано нижче:

$name = 'Steve';

$implicit = "Hello, $name";
$explicit = "Hello {$name}";

Підсумковий клас

The випускний_клас я буду переслідувати Майкла Дайринду. Це змушує all ваші заняття будуть остаточними у вашій заявці. Проте будьте обережні, оскільки це зробить кожен клас остаточним, що може призвести до поломок у разі використання pest або розширення базового контролера в Laravel. На моє щастя, я не дуже про це хвилююся, тому що я не використовую багато спадковості.

Підсумкове внутрішнє заняття

The кінцевий_внутрішній_клас правило - це спосіб боротьби з вищезгаданим правилом. Якщо ви не хочете, щоб клас був остаточним, оскільки ви плануєте його розширити, переконайтеся, що для цього правила встановлено значення помилковий у вашій конфігурації. Це вкаже остаточному правилу ігнорувати це правило, а внутрішні класи повинні not бути остаточним.

{
  "final_internal_class": false
}

Повністю кваліфіковані строгі типи

The fully_qualified_strict_types правило змусить вас імпортувати клас як оператор використання у вашому коді замість того, щоб оголошувати повне ім’я класу як тип у методах тощо. Це зберігає код чистим, а чистий код є щасливим кодом.

// before
public function __invoke(\Illuminate\Http\Request $request)

// after
public function __invoke(Request $request)

Є багато інших правил, якими я користуюся, щоб не набридати вам кожен Я поділюся своєю конфігурацією, також подивіться на Веб-сайт налаштування PHP CS щоб ви могли бачити, що таке правила і що вони роблять.

Ось моя поточна конфігурація, але майте на увазі, що я часто налаштовую це, оскільки вважаю, що стандарти коду мають бути живою істотою. Це має бути те, що ви постійно переоцінюєте та перевіряєте, чи воно все ще відповідає вашим потребам.

Comments

No comments yet
Yurij Finiv

Yurij Finiv

Full stack

Про мене

Professional Fullstack Developer with extensive experience in website and desktop application development. Proficient in a wide range of tools and technologies, including Bootstrap, Tailwind, HTML5, CSS3, PUG, JavaScript, Alpine.js, jQuery, PHP, MODX, and Node.js. Skilled in website development using Symfony, MODX, and Laravel. Experience: Contributed to the development and translation of MODX3 i...

Про автора CrazyBoy49z
WORK EXPERIENCE
Контакти
Ukraine, Lutsk
+380979856297