Вийшла нова версія Laravel 11.30

Перекладено ШІ
Оригінал: Laravel News
Оновлено: 01 листопада, 2024
Цього тижня команда Laravel випустила версію 11.30, яка принесла нові можливості, такі як тестові допоміжні методи без відкладення та підтримка унікальних рядкових ідентифікаторів. Зацікавлені, як ці оновлення можуть покращити ваш процес розробки? Читайте далі, щоб дізнатися більше!

Цього тижня команда Laravel випустила версію v11.30, яка включає нові тестові хелпери defer, можливість визначати унікальні рядкові ID для моделей Eloquent, використання бонусних Enums з AuthorizesRequests та багато іншого

# Нові тестові хелпери withDefer() та withoutDefer()

Тім МакДональд додав тестові хелпери withoutDefer() та withDefer(). Використання withoutDefer() корисне, коли ви працюєте з тестами, що використовують defer, але потрібно його відключити, щоб перевірити результат відкладеного виклику:

// ❌ не працює
User::create(/* ... */);

$this->assertAgainstSomeDeferredOutcome();

// ✅ працює
$this->withoutDefer();

User::create(/* ... */);

$this->assertAgainstSomeDeferredOutcome();

Деталі реалізації цих хелперів можна знайти у Pull Request #53340.

# Введення трейту HasUniqueStringIds

Люк Кузміш оновив код для трейтов 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.

# Дозволити методу authorize() приймати Enums

Йоган ван Хелден оновив трейт 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. Нижче наведено примітки до випуску, які безпосередньо взято з чек-листу:

# v11.30.0