Laravel, популярний фреймворк для розробки веб-додатків на PHP, нещодавно випустив свою нову версію — 11.30. Цей оновлення приносить безліч нових функцій та покращень, які підвищують продуктивність розробників та гнучкість коду. Давайте розглянемо основні моменти цього релізу.
Нові допоміжні функції для тестування: withDefer()
та withoutDefer()
Однією з видатних новинок у Laravel 11.30 є введення нових допоміжних функцій для тестування: withDefer()
та withoutDefer()
, які були додані Тімом МакДональдом. Ці функції особливо корисні, коли ви працюєте з тестами, що використовують відкладені виклики, але вам потрібно вимкнути їх для перевірки результату відкладеного виклику.
Ось приклад використання нової допоміжної функції withoutDefer()
:
// Це не працюватиме
User::create(/* ... */);
$this->assertAgainstSomeDeferredOutcome();
// Це працюватиме
$this->withoutDefer();
User::create(/* ... */);
$this->assertAgainstSomeDeferredOutcome();
Ці допоміжні функції дають розробникам більше контролю над відкладеними операціями під час тестування, що дозволяє точніше перевіряти результати та покращує надійність тестів.
Користувацькі унікальні строкові ID з трейтом HasUniqueStringIds
Люк Кузміш представив трейтову функцію HasUniqueStringIds
, яка дозволяє розробникам використовувати користувацькі унікальні строкові ID як ключі маршруту без необхідності перевизначати метод resolveRouteBindingQuery()
. Це оновлення доповнює існуючі трейти HasUuids
та HasUlid
, даючи більше можливостей для генерації ID.
Ось приклад реалізації користувацьких унікальних строкових ID:
trait HasTwrnsTrait
{
use HasUniqueStringIds;
public function newUniqueId()
{
return (string) Twrn::new();
}
protected function isValidKey($value): bool
{
return Twrn::isValid($value);
}
Ця функція дозволяє краще налаштувати ідентифікатори моделей, зберігаючи сумісність з існуючими конвенціями Laravel.
Покращена авторизація з підтримкою enum
Йоган ван Хелден оновив трейт AuthorizesRequests
, щоб дозволити безпосередньо використовувати підключені enum. Це оновлення співвідноситься з нещодавніми оновленнями Laravel, що підтримують пряме використання Enums у різних частинах фреймворку.
Ось як тепер можна використовувати Enum з методом authorize()
:
enum DashboardPermission: string
{
case VIEW = 'dashboard.view';
}
// До
public function index(): Response
{
$this->authorize(DashboardPermission::VIEW->value);
// ...
}
// Після
public function index(): Response
{
$this->authorize(DashboardPermission::VIEW);
// ...
}
Це оновлення спрощує код авторизації та покращує типову безпеку при роботі з enum для дозволів.
Інші значущі покращення
Laravel 11.30 також включає кілька інших удосконалень:
- Додано параметр
$bind
дляBlade::directive
для покращення функціональності директив Blade. - Виправлено роботу
trans_choice()
, коли заміни в перекладах містять роздільник|
. - Покращена продуктивність за рахунок використання
exists()
замістьcount()
у певних операціях. - Додано підтримку для власних операторів Postgres.
- Введено необов'язкові вимірювання для типу стовпця
vector
. - Додано повідомлення про помилку для
PostTooLargeException
. - Виправлено порушення цілісності для
failed_jobs_uuid_unique
.
Laravel 11.30 демонструє прагнення фреймворку до постійного вдосконалення та впровадження функцій, зручних для розробників. Завдяки покращеним можливостям тестування, більш гнучким параметрам ID моделей і спрощеній авторизації з використанням enum, це оновлення дає розробникам нові інструменти для написання чистішого та ефективнішого коду. Як Laravel продовжує еволюціонувати, він залишатиметься популярним вибором серед розробників PHP, що шукають потужний і багатофункціональний фреймворк для веб-додатків.
Зацікавлені у тому, як я можу допомогти вам підвищити ваш бізнес за допомогою Laravel?
Перекладено з: Laravel 11.30: A Leap Forward in Testing, Model IDs, and Authorization