Laravel 7.x – co nowego?

 mar, 05 - 2020   PHP

Laravel 7.xZgodnie z kalendarzem, 3-go marca 2020 została wydana nowa wersja Laravel-a. Co nowego zaproponowali twórcy tego niezwykle popularnego frameworka PHP? Zapraszam do przeczytania tego artykułu.

 

 

 

 

Zmiany w Eloquent Casts

Tworząc modele Eloquent, mamy możliwość zdefiniowania rzutowania typu dla wybranych pól w bazie danych. Przykładowo, możemy określić, że wartość dla danego pola ma być typu boolean i dla tak zdefiniowanego pola po pobraniu lub zapisie jego wartości, nastąpi automatyczna konwersja na podany typ.

Laravel posiada szereg wbudowanych modyfikatorów: integer, real, float, double, decimal:<digits>, string, boolean, object, array, collection, date, datetime, timestamp.

Nowa wersja frameworka umożliwia jednak definiowanie własnych klas, modyfikujących wskazane pola w odpowiedni sposób. Taka klasa implementuje interfejs CastAttributes i powinna definiować dwie metody: get i set – zostana one automatycznie wywołane podczas odczytu i zapisu wartości wskazanego pola w bazie danych.

Po utworzeniu takiej klasy wystarczy ją użyć na wybranym polu modelu.

Dodano również możliwość ustawienia rzutowania typu pola bezpośrednio podczas definiowania zapytania do bazy danych.

 

Klient HTTP

Wprowadzona została nowa biblioteka użyteczna przy komunikacji poprzez protokół HTTP. Nowy klient jest nakładką na bibliotekę Guzzle i pozwala wykonywać zapytania przy minimalnej konieczności ustawień i linijek kodu.

Ponadto została wprowadzona funkcjonalność ułatwiająca testy, korzystające z zapytań HTTP. Daje możliwość zdefiniowania zasobów, dla których po wykonaniu żądania zostanie zwrócona z góry przygotowana odpowiedź testowa.

 

 

Ułatwienia w Route

Od teraz, definiując ścieżkę route, możemy podać nazwę pola w bazie danych, po którym zwracany będzie model (domyślnie jest to pole „id”). W poniższym przykładzie, model będzie wyszukiwany uwzględniając pole „slug”.

Dodatkowo, jeżeli w ścieżce podamy dwa modele, to Eloquent domyślnie założy że drugi model jest w relacji do pierwszego i że jego „dzieckiem”. Innymi słowy przy odpytaniu bazy danych o drugi model, do zapytania zostanie dodany warunek przynależności do pierwszego modelu.

Dla powyższego przykładu model „post” musi należeć do modelu „user”.

 

Konfiguracji kilku bibliotek mailingowych w jednej aplikacji

Laravel 7 umożliwia konfiguracje wielu „mailer-ów” w jednej aplikacji, a następnie ich użycie dla różnych funkcjonalności. Przykładowo możemy mieć skonfigurowany mailer SendGrid dla wiadomości reklamowych, a domyślny mailer dla wiadomości związanych z obsługa użytkowników (rejestracja, zmiana, hasła, itp.).

Za pomocą metody „mailer” możemy wskazać, z której konfiguracji chcemy skorzystać podczas wysyłki.

 

Konfiguracja maksymalnej liczby wyjątków dla kolejki

Dodana została możliwość konfiguracji liczby nieobsłużonych wyjątków, po osiągnięciu której zadanie dla zostanie uznane za niewykonane.

W powyższym przykładzie, status zadania zostanie zmienione na „failed”, jeżeli 3 razy zostanie wyrzucony wyjątek.

 

Pozostałe zmiany

  • Laravel Sanctum – została wprowadzona biblioteka ułatwiająca implementacje procesu uwierzytelnienia użytkownika za pomocą API oraz wprowadzająca szereg użytecznych funkcjonalności.
  • Dodatkowe funkcjonalności helper-a Str ułatwiającego manipulacje na stringach.
  • Ulepszona funkcjonalność cache-owania route-ów, co może nieco przyśpieszyć działanie aplikacji. Tak naprawdę różnica może być w jakiś sposób zauważalna dla bardzo dużej ilości route-ów (np. powyżej 1000).
  • Możliwość prostej konfiguracji polityki CORS (Cross-Origin Resource Sharing) dla zapytań z zewnętrznych aplikacji.
  • Poprawiona obsługa kolejki dla bazy danych MySQL 8+.
  • Dodanie komendy Artisan test, do testowania aplikacji.
  • Odświeżony domyślny szablon dla wiadomości e-mail.
  • Możliwość konfiguracji i zmiany szablonów tzw. stub dla polecenia make.
  • Ulepszenia w komponentach dla systemu szablonów Blade.

 

Powyżej opisane zostały jedynie niektóre, najważniejsze zmiany i udogodnienia. Oczywiście jest ich znacznie więcej. Zachęcam do sprawdzenia zmian i nowych funkcjonalności frameworka Laravel w wersji 7.x.


Przeczytaj równierz