Цього тижня команда Laravel випустила версію v11.30, яка включає нові тестові хелпери defer, можливість визначати унікальні рядкові ID для моделей Eloquent, використання бонусних Enums з AuthorizesRequests та багато іншого
Тім МакДональд додав тестові хелпери withoutDefer() та withDefer(). Використання withoutDefer() корисне, коли ви працюєте з тестами, що використовують defer, але потрібно його відключити, щоб перевірити результат відкладеного виклику:
// ❌ не працює
User::create(/* ... */);
$this->assertAgainstSomeDeferredOutcome();
// ✅ працює
$this->withoutDefer();
User::create(/* ... */);
$this->assertAgainstSomeDeferredOutcome();
Деталі реалізації цих хелперів можна знайти у Pull Request #53340.
Люк Кузміш оновив код для трейтов HasUuids та HasUlid, що дозволяє використовувати власні унікальні рядкові ID як ключі маршруту, не переозначуючи resolveRouteBindingQuery(). Ось приклад, як ви можете налаштувати типи унікальних рядків для вашої моделі:
trait HasTwrnsTrait
{
use HasUniqueStringIds;
public function newUniqueId()
{
return (string) Twrn::new();
}
protected function isValidKey($value): bool
{
return Twrn::isValid($value);
}
}
Це оновлення не вводить жодних руйнівних змін, адже моделі HasUuids і HasUlid тепер використовують трейт HasUniqueStringIds. Більше деталей у Pull Request #53280.
Йоган ван Хелден оновив трейт AuthorizesRequests, щоб він міг безпосередньо приймати бонусні Enums. 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);
//
}
Ви можете переглянути повний список нових можливостей та оновлень нижче, а також зміни між версіями 11.29.0 та 11.30.0 на GitHub. Нижче наведено примітки до випуску, які безпосередньо взято з чек-листу:
$bind до Blade::directive від @hossein-zare у Pull Request.trans_choice(), коли в заміні перекладів використовується розділювач | від @crynobone у Pull Request.exists() замість count() від @browner12 у Pull Request.vector від @akr4m у Pull Request.dropColumnsIfExists, dropColumnIfExists та dropForeignIfExists від @eusonlito у Pull Request.dropColumnsIfExists, dropColumnIfExists та dropForeignIfExists" від @taylorotwell у Pull Request.HasUniqueStringIds від @cosmastech у Pull Request.withoutDefer і withDefer для тестування від @timacdonald у Pull Request.Хочете забезпечити повну прозорість у своїх Laravel-додатках? Пакет Laravel Audit Log допоможе вам детально відстежувати всі зміни моделей Eloquent та відповідати вимогам регуляторів. Читайте далі, щоб дізнатися, як цей потужний інструмент може підвищити надійність вашого проєкту
Встановлення Xdebug може бути складним завданням, але в цій статті ми розкриємо, як швидко та просто налаштувати його за допомогою Docker на прикладі Laravel. Дочитайте до кінця, щоб дізнатися, як за кілька хвилин зробити Xdebug вашим надійним помічником у розробці
PHP 8.5 обіцяє безліч нових можливостей, таких як оператор Pipe, функції `array_first()` та `array_last()`, а також нове розширення URI. Чи готові ви дізнатися, як ці функції можуть спростити вашу розробку? Читайте далі, щоб дізнатися більше про ці захоплюючі нововведення