• Czas czytania ~5 min
  • 20.01.2023

Kufel Laravela to gorąca nowość od zespołu Laravel. Doskonałe opakowanie wokół PHP CS Fixer, które jest moim podstawowym narzędziem do standardów kodu.

O wydaniu pisałem już wcześniej Laravel Pint kiedy został wydany po raz pierwszy. Domyślnie będzie podążać za laravel standard out of the box, niestandardowy standard opracowany przez zespół Laravel.

Co jednak zrobić, jeśli chcemy czegoś innego? Zagłębmy się trochę.

Jeśli czytasz dokumentację, jest to bardzo pouczające, co możesz zrobić z Laravel Pint. Możesz zaimplementować wiele reguł w poręcznym pliku JSON, ale które z nich działają dobrze i co powinieneś zrobić?

Przeprowadzę Cię przez moją osobistą konfigurację Laravel Pint i wyjaśnię, co i dlaczego wybieram te ustawienia.

Wyrównaj komentarze wielowierszowe

Ta reguła align_multiline_comment will wszystkoow you to fix any comments that I call "borked". They have all gone out of alignment and look weird. It is nie 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.

Wcięcie tablicy

Zasada wcięcie_tablicy pozwoli ci naprawić wszelkie tworzone tablice, które z jakiegoś powodu ponownie się „znudziły”. Kolejna reguła czyszczenia kodu, która uporządkuje miejsca, w których spacje mogą być użyte w niewłaściwym miejscu itp. Itp.

Składnia tablicy

The składnia_tablicy rule to taka, której możesz nie potrzebować, w zależności od wieku twojego kodu. Ta zasada zmieni stare szyk() składnia do nowego [] składnia. Zachowuję to na wypadek, gdybym miał stary kod lub pracował z wieloma programistami, którzy mogą popaść w stare nawyki.

Pusta linia po przestrzeni nazw

The pusta_linia_przestrzeń_po_nazwach rule to reguła porządkująca, której używam, aby upewnić się, że pod deklaracją przestrzeni nazw w dowolnej klasie zawsze znajduje się pusta linia.

Pusta linia po otwarciu tagu

The blank_line_after_opening_tag rule jest podobna do poprzedniej reguły, ale wymusza pustą linię po otwierającym tagu PHP. Lubię mieć uporządkowany i jednolity kod - te reguły to umożliwiają.

Połącz kolejne Issets

The Combine_consecutive_issets reguła to taka, która nauczyła mnie, że mogę użyć więcej niż jednego argumentu w sprawdzaniu isset — co było dla mnie czymś nowym. Spowoduje to przekształcenie dowolnego kodu, który łączy jedną lub więcej kontroli isset w jedną czystą kontrolę.

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

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

Połącz kolejne rozbrojenia

The Combine_consecutive_unsets rule jest jak powyższa reguła, coś, o czym nie wiedziałem, że mogę zrobić - i zmusza mnie do użycia lepszego kodu.

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

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

Przestrzeń konkatowa

The concat_space rule jest jednym z moich ulubionych. Wymusza spacje między dowolnymi konkatenacjami łańcuchów - co jest jedną z rzeczy, których nienawidzę nie widzieć. Lubię, gdy mój kod ma miejsce, a nie jest zgnieciony, ponieważ przestrzeń go spowolni.

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

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

Zadeklaruj nawiasy

The ogłosić_parentheses reguła jest niemal przeciwieństwem powyższej reguły. Gdziekolwiek używam a declare oświadczenie, chcę się upewnić, że nie ma wokół niego niepotrzebnych spacji.

// before
declare( strict_type = 1 );

// after
declare(strict_types=1);

Zadeklaruj ścisłe typy

The deklarowane_ścisłe_typy reguła jest dla mnie koniecznością. Biorąc pod uwagę ilość używanych typów, których używam w moim kodzie, lubię również upewnić się, że włączone jest ścisłe pisanie. Jest to przydatna zasada, aby wymusić to w bazie kodu bez pamiętania o dodawaniu go za każdym razem. Świetne dla Laravel, ponieważ nie musisz modyfikować swoich kodów pośredniczących, aby je dodać!

declare(strict_types=1);

Jawna zmienna łańcuchowa

The jawna_zmienna_łańcuchowa reguła to taka, którą uwielbiam dodawać, ponieważ sprawia, że ​​mój kod jest o wiele łatwiejszy do odczytania. Wszędzie tam, gdzie używasz niejawnych zmiennych w swoim kodzie, sprawi to, że będą one jawne, jak poniżej:

$name = 'Steve';

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

Klasa końcowa

The klasa_końcowa Zasada jest tą, o którą będę nawiedzać Michaela Dyryndę. To zmusza all twoje zajęcia będą ostateczne w twojej aplikacji. Zachowaj jednak ostrożność, ponieważ spowoduje to, że każda klasa będzie ostateczna, co może prowadzić do awarii, jeśli użyjesz szkodnika lub rozszerzysz podstawowy kontroler w Laravel. Na szczęście dla mnie - nie martwię się tym tak bardzo, ponieważ nie używam dużo dziedziczenia.

Końcowa klasa wewnętrzna

The końcowa_klasa_wewnętrzna reguła to sposób na zwalczanie powyższej zasady. Jeśli nie chcesz, aby zajęcia były ostateczne, ponieważ planujesz je przedłużyć - upewnij się, że ta reguła jest ustawiona na fałszywe w Twojej konfiguracji. To powie ostatniej regule, aby zignorowała tę i że klasy wewnętrzne powinny not być ostatecznym.

{
  "final_internal_class": false
}

W pełni kwalifikowane typy ścisłe

The w pełni_kwalifikowane_ścisłe_typy rule zmusi cię do zaimportowania klasy jako instrukcji użycia w twoim kodzie, zamiast deklarowania w pełni kwalifikowanej nazwy klasy jako typu w metodach itp. Dzięki temu kod jest czysty, a czysty kod to szczęśliwy kod.

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

// after
public function __invoke(Request $request)

Istnieje wiele innych zasad, których używam, więc zamiast Cię zanudzać każdy jeden Podzielę się moją konfiguracją, zerknij też na Strona konfiguracji PHP CS abyś mógł zobaczyć, jakie są zasady i co robią.

Oto moja obecna konfiguracja, ale pamiętaj, że często to poprawiam, ponieważ uważam, że standardy kodu powinny być żywą istotą. Powinno to być coś, co stale oceniasz i sprawdzasz, czy nadal spełnia Twoje potrzeby.

Comments

No comments yet
Yurij Finiv

Yurij Finiv

Full stack

O

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...

O autorze CrazyBoy49z
WORK EXPERIENCE
Kontakt
Ukraine, Lutsk
+380979856297