Jak każdy popularny framework tak i Laravel rozwija się bardzo szybko. Pracując w Software House wiesz jak istotny jest czas, jak projekt goni projekt. Ciężko jest nadążyć za wszystkimi aktualizacjami. Ale nie martw się, nie musisz analizować tych ostatnich bo zrobiliśmy to za Ciebie. Przygotowaliśmy zestaw najważniejszych aktualizacji, które w naszej opinii pomagają w kodowaniu i sprawiają, że kod jest wydajniejszy i bardziej czytelny.

Chcesz sprawdzić jakie nowe funkcje pojawiły się w ostatnich wersjach Laravel ? Zapraszamy!

Laravel 8.76

W tej aktualizacji naszą uwagę przykuły dwie zmiany.

Pierwszą z nich jest dodanie nowych metod dla klasy Response -> unauthorized() oraz forbidden(). Ta zmiana z pewnością sprawi, że kod będzie o wiele czytelniejszy, gdyż zamiast weryfikować status odpowiedzi w ten sposób:

if (response->status() === 401) {

}

if (response->status() === 403) {

}

będziesz mógł zrobić to w ten sposób:

if ($response->unauthorized()) {

}

if ($response->forbidden()) {

}

Kolejna zmiana, które może być przydatna, to dodanie metody substrReplace() do klasy Str. Funkcja ta umożliwia wstawienie dodatkowego ciągu znaków we wskazanym miejscu tekstu wejściowego:

$godzina = '1300′;

$godzina = Str::substrReplace($godzina, ’:’, 2, 0);

// To nam daje rezultat w postaci 13:00.

Laravel 8.74

Spotkaliśmy się z różnymi sposobami weryfikacji czy strona działa w trybie debug czy produkcyjnym. Najczęściej wykorzystywaną metodą jest odniesienie się do metody config(’app.env’) oraz weryfikacji aktywnego środowiska. Niektórzy pobierają z kolei parametr config(’app.debug’) i sprawdzają czy wartość jest ustawiona na true. Joel Mellon wyszedł z inicjatywą, aby ujednolicić sposób weryfikacji i wprowadził metodę statyczną klasy App, która zwraca nam czy aplikacja ma włączony tryb debug czy też nie:

if (App::hasDebugModeEnabled()) {

}

W wydaniu 8.74 pojawiły się niezwykle przydatne funkcje, które pomogą w pracy na tablicach przesyłanych przez formularze. Mowa tutaj o metodach Arr::dot oraz Arr:undot. Wydaje mi się, że najlepszym wyjaśnieniem jak one działają, będzie poniższy przykład:

$dane_przed_zmiana = [
    'user' => [
        'name' => 'foo',
        'secondname' => 'bar',
    ]
];

$dane_po_zmianie = Arr::dot($dane_przed_zmiana);

/*
 |   W rezultacie otrzymamy taką tablicę
 |
 |   $dane_po_zmianie = [
 |      'user.name' => 'foo',
 |      'user.occupation' => 'bar',
 |   ];
*/

// Jeśli chcesz odwrócić działanie 
// skorzystaj z metody undot
Arr::undot($dane_po_zmianie);

Kolejna ciekawa metoda, z której już skrzystaliśmy to reverse() klasy Str. Funkcja odwraca ciąg znaków, tak jakbyśmy chcieli czytać go od tyłu. Dodatkowym atutem metody jest fakt, że świetnie radzi sobie ze znakami multibyte:

Str::reverse('Testowy tekst')
// Daje nam jako wynik tsket ywotseT

Str:reverse('kajak')
/* 
  |   Niestet daje nadal kajak ;) 
  |   Ciekawostka: Możesz sprawdzić czy wpisany tekst 
  |   jest palindromem szybkim porównaniem
  |   $tekst_wpisany === Str::reverse($tekst_wpisany)
*/

Laravel 8.69

Nie możemy pominąć tej aktualizacji. @Italo dodał metodę, która będzie niezwykle przydatna chociażby pod kątem RODO, w momencie gdy będziesz musiał anonimizować dane osobowe. Funkcja mask klasy Str, bo o niej mowa, pozwoli Ci na szybkie i przyjemne maskowanie ciągów znaków:

Str::mask('moj-email@safistudio.pl','*',3)
// Daje w rezultacie -> moj********************

Str::mask('maskuj tylko część', -10, 5)
// Daje w rezultacie -> maskuj t*****część

Przy pomocy tej metody możesz np. maskować podstawowe dane osobowe jak adres e-mail, telefon, numery PESEL, gdy tylko przestaniesz je przetwarzać. Możesz też stworzyć funkcję, która po froncie wyświetli zamaskowane dane i odsłoni je dopiero po kliku (aby uchronić się przed pozyskiwaniem kontaktów przez boty). Jestem przekonany, że gdy czytasz ten artykuł już widzisz gdzie to wykorzystasz (a przynajmniej ja tak miałem, gdy zapoznawałem się z changelogiem).

PHP 8.1

Całkiem niedawno wyszła wersja PHP 8.1, która wprowadza natywne wsparcie dla wyliczeń (Enums). Fakt ten sprawia, że możesz tworzyć jeszcze bardziej czytelny i spójny kod. Z pewnością korzystasz też z typów wyliczeniowych w bazach danych. Aby sprawić by kod był czytelny, do tej pory posługiwaliśmy się zmiennymi statycznymi serwisów, które odpowiadały za opisowe wartości flag niektórych pól w bazie. Od PHP 8.1 zmieniamy podejście. Dla przykładu, jeśli chcesz wykonać metodę zmiany statusu jakiegoś obiektu, możesz upewnić się, że jako wartość wpadnie tylko taki status, na które pozwolisz:

enum Status
{
    case Draft;
    case Published;
    case Archived;
}

function changeStatus(Status $status) {
 // ...
}

Możesz też skorzystać z klasy Status podczas walidacji formularza, aby upewnić się, że przekazywany status jest wartością z dostępnej listy:

$request->validate([
    'status' => ['required', new Enum(Status::class)]
]);

Podsumowanie

W naszej ocenie, wśród wszystkich zmian, które ukazały się w ostatnim okresie wypisaliśmy te najbardziej przydatne. Jesteśmy przekonani, że wspomniane metody wykorzystasz już w najbliższych projektach. Wśród pozostałych zmian pojawiło się też wiele poprawek i innych funkcjonalności, które mogą być przydatne (wszystko zależy od projektu jaki realizujesz), dlatego jeśli masz trochę więcej czasu, zachęcamy do szybkiego zapoznania się z pełnym changelogiem.

Z pewności niedługo wrócimy z listą kolejnych zmian, gdy tylko pojawią się nowe, warte uwagi, funkcje.

O nowościach www świecie

Cyfrowy świat wciąż się zmienia. A my wraz z nim. Trzymamy rękę na pulsie, żebyś Ty z łatwością nadrobił zaległości w digitalnych newsach. Sprawdź, co w necie piszczy!

Zobacz więcej