Laravel 13.3.0: атрибут #[UnitTest], варіативні аргументи для моделей та інші новинки

0
Перекладено ШІ
Оригінал: Laravel News
Оновлено: 05 квітня, 2026
Новий реліз Laravel представляє атрибут #[UnitTest] для надшвидкого тестування та зручні варіативні аргументи для атрибутів моделей. Дізнайтеся, як ці оновлення та покращений моніторинг черг допоможуть оптимізувати ваш процес розробки.

Цей реліз додає PHP-атрибут #[UnitTest] для пропуску завантаження фреймворку в окремих методах тестування, підтримку варіативних аргументів для атрибутів моделей (#[Fillable], #[Hidden] тощо), нову подію BatchStarted у життєвому циклі пакетів завдань та інші покращення.

# Що нового

# Атрибут #[UnitTest]

Новий атрибут #[UnitTest] дозволяє пропускати завантаження (booting) фреймворку для окремих методів у межах TestCase. Це корисно, коли більшість тестів у класі потребують контейнера, але кілька методів є чистими юніт-тестами, яким він не потрібен.

Раніше кожен тест у класі витрачав ресурси на завантаження всього фреймворку. З #[UnitTest] такі методи виконуються як звичайні тести PHPUnit, що може бути на порядок швидше.

use Illuminate\Foundation\Testing\Attributes\UnitTest;
 
class LocationServiceTest extends TestCase
{
    public function test_getCoordinates_resolves_address_for_us(): void
    {
        // потребує контейнера
    }
 
    #[UnitTest]
    public function test_getState_returns_state_from_abbreviation(): void
    {
        // завантаження фреймворку не потрібне
    }
}

Pull Request: #59432

# Варіативні атрибути моделей

Кілька атрибутів Eloquent-моделей тепер приймають варіативні аргументи. Раніше потрібно було передавати масив, тепер же кожне значення можна вказати окремим аргументом:

// Було
#[Fillable(['first_name', 'last_name'])]
#[Hidden(['password', 'secret'])]
class User extends Model {}
 
// Стало
#[Fillable('first_name', 'last_name')]
#[Hidden('password', 'secret')]
class User extends Model {}

Передача одного масиву все ще підтримується, тому це оновлення не ламає зворотну сумісність.

Pull Request: #59421

# Подія BatchStarted

Нова подія BatchStarted спрацьовує, коли починається обробка першого завдання у пакеті (незалежно від результату). Це заповнює прогалину в життєвому циклі пакета:

Це дозволяє чітко відрізняти пакет, що просто чекає в черзі, від того, що вже активно виконується, що важливо для моніторингу прогресу та оновлення UI.

Pull Request: #59458

# Використання пам'яті у виводі черги

При запуску воркера черги з прапорцем -v, для кожного виконаного завдання тепер відображається поточне споживання пам'яті поруч із часом виконання:

# Було
2026-04-01 09:45:39 App\Jobs\ProcessReport 121599597 database reports 110.57ms DONE
 
# Стало
2026-04-01 09:45:39 App\Jobs\ProcessReport 121599597 database reports 44.58ms 132.5MB DONE

Для вимірювання пам'яті використовується та сама логіка, що і для внутрішньої перевірки memoryExceeded. Це дає змогу бачити, наскільки близько завдання підходить до ліміту --memory.

Pull Request: #59379

# Інші виправлення та покращення

Черги та воркери:

Планувальник (Scheduling):

Моделі та база даних:

HTTP та запити:

URI:

Тестування:

Колекції:

Schema:

Безпека:

Нотатки щодо оновлення

Для типових застосунків критичних змін не очікується. Перед оновленням перегляньте повний список змін.

Посилання

Популярні

Logomark Logotype

Використання повнотекстового пошуку в Laravel

Laravel пропонує потужні можливості повнотекстового пошуку за допомогою методів whereFullText та orWhereFullText, що дозволяють здійснювати складні запити до бази даних. Дізнайтеся, як реалізувати ефективний пошук для вашого блогу чи системи управління контентом

Logomark Logotype

Журнал аудиту в Laravel

Хочете забезпечити повну прозорість у своїх Laravel-додатках? Пакет Laravel Audit Log допоможе вам детально відстежувати всі зміни моделей Eloquent та відповідати вимогам регуляторів. Читайте далі, щоб дізнатися, як цей потужний інструмент може підвищити надійність вашого проєкту

Logomark Logotype

Nuxt 3 + Laravel Sanctum: Просте та надійне рішення для автентифікації вашого SPA та API

У сучасній веб-розробці аутентифікація є ключовою для захисту додатків і даних користувачів. Дізнайтеся, як модуль nuxt-sanctum-authentication спростить інтеграцію між Nuxt 3 та Laravel Sanctum, забезпечуючи надійний і зручний спосіб реалізації аутентифікації для вашого проєкту