Цей реліз додає PHP-атрибут #[UnitTest] для пропуску завантаження фреймворку в окремих методах тестування, підтримку варіативних аргументів для атрибутів моделей (#[Fillable], #[Hidden] тощо), нову подію BatchStarted у життєвому циклі пакетів завдань та інші покращення.
#[UnitTest] для пропуску завантаження фреймворку в окремих тестах#[Fillable], #[Appends], #[Hidden] та інших атрибутів моделейBatchStarted для моніторингу життєвого циклу пакетів завданьinstall:broadcasting тепер передає прапорець --ignore-scripts у npm/pnpmНовий атрибут #[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 спрацьовує, коли починається обробка першого завдання у пакеті (незалежно від результату). Це заповнює прогалину в життєвому циклі пакета:
BatchDispatched — завдання додані в чергу, але ще не взяті в роботуBatchStarted — обробка першого завдання почаласяBatchFinished — усі завдання завершені (або скасовані)BatchCanceled — пакет завдань скасованоЦе дозволяє чітко відрізняти пакет, що просто чекає в черзі, від того, що вже активно виконується, що важливо для моніторингу прогресу та оновлення 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
Черги та воркери:
releaseOnTerminationSignals через групи розкладу (#59357)LostConnection до WorkerStopReason (#59370)getLockForPopping() у DatabaseQueue (#59435)QueueManager (#59389)LogManager (#59391)Планувальник (Scheduling):
Моделі та база даних:
incrementEach/decrementEach для обмеження областю екземпляра моделі (#59376)MorphTo, коли ownerKey дорівнює null, а ключ результату не є примітивом (#59394)CollectedBy тепер підтримує успадкування (#59419)Stringable тепер можна повертати з casts() (#59479)HTTP та запити:
->file() до $request->safe() для доступу до валідованих файлів (#59396)afterResponse (#59410)URI:
isNotEmpty() до класу Uri (#59408)withoutFragment() до класу Uri (#59413)Тестування:
Колекції:
Collection тепер сумісні з конструкторами розширених підкласів (#59455)Schema:
MariaDbSchemaState тепер використовує mysql --version для визначення клієнта замість mariadb --version (#59360)Безпека:
install:broadcasting тепер передає прапорець --ignore-scripts у npm/pnpm при встановленні пакетів, щоб запобігти виконанню життєвих циклів скриптів під час інсталяції (#59485)Нотатки щодо оновлення
Для типових застосунків критичних змін не очікується. Перед оновленням перегляньте повний список змін.
Посилання
Laravel пропонує потужні можливості повнотекстового пошуку за допомогою методів whereFullText та orWhereFullText, що дозволяють здійснювати складні запити до бази даних. Дізнайтеся, як реалізувати ефективний пошук для вашого блогу чи системи управління контентом
Хочете забезпечити повну прозорість у своїх Laravel-додатках? Пакет Laravel Audit Log допоможе вам детально відстежувати всі зміни моделей Eloquent та відповідати вимогам регуляторів. Читайте далі, щоб дізнатися, як цей потужний інструмент може підвищити надійність вашого проєкту
У сучасній веб-розробці аутентифікація є ключовою для захисту додатків і даних користувачів. Дізнайтеся, як модуль nuxt-sanctum-authentication спростить інтеграцію між Nuxt 3 та Laravel Sanctum, забезпечуючи надійний і зручний спосіб реалізації аутентифікації для вашого проєкту