Дата випуску: January 20, 2026
Laravel Version: 12.48.0
Коротко
Laravel v12.48.0 додає аліаси для виразів у Query Builder, нові події життєвого циклу пакетів, розширені опції декодування JSON у HTTP-відповідях та подію BatchFinished. Реліз також містить покращення типізації, підтримку ізольованої компіляції view під час паралельного тестування та метод skipWhen для CORS middleware.
Головні новинки:
BatchFinished для управління життєвим циклом batchskipWhen() для HandleCors middlewareLaravel 12.48.0 додає зручні методи для задання псевдонімів raw-виразів безпосередньо в query builders, що робить raw SQL читабельнішим і простішим у підтримці.
// Before: select available_a - used_a from "users"
// v12.48.0: select (available_a - used_a) as "remaining_a" from "users"
User::select([
'remaining_a' => new Expression('available_a - used_a'),
]);
Pull Request: #58436
Додано подію BatchFinished, що спрацьовує, коли batch успішно завершується (усі jobs виконано без помилок). Це доповнює BatchFailed і дає точніший контроль над життєвим циклом пакетів.
use Illuminate\Bus\Events\BatchFinished;
Event::listen(function (BatchFinished $event) {
$batch = $event->batch;
// Perform cleanup or post-processing
Log::info("Batch {$batch->id} completed successfully");
// Trigger follow-up actions
dispatch(new NotifyAdminOfCompletion($batch));
});
Застосування:
Pull Request: #58431
Клас Response HTTP Client тепер приймає кастомні флаги декодування JSON, даючи контроль над парсингом JSON-відповідей.
$response = Http::get('https://api.example.com/data');
// Decode with custom flags
$data = $response->json(flags: JSON_BIGINT_AS_STRING);
// Combine multiple flags
$data = $response->json(
flags: JSON_BIGINT_AS_STRING | JSON_THROW_ON_ERROR
);
Корисно коли:
Pull Request: #58379
HandleCors тепер підтримує умовне пропускання через новий метод skipWhen(), що дозволяє обходити CORS для конкретних маршрутів або умов.
use Illuminate\Http\Middleware\HandleCors;
// In a service provider or middleware configuration
HandleCors::skipWhen(function ($request) {
// Skip CORS for internal API calls
return $request->is('internal-api/*');
});
// Or use a simpler condition
HandleCors::skipWhen(fn ($request) => $request->hasHeader('X-Internal-Request'));
Це зручно для внутрішніх endpoint-ів або health checks, які не повинні підлягати CORS-політиці.
Pull Request: #58361
Рядки перекладу тепер можуть містити квадратні ([]) і фігурні ({}) дужки, що дозволяє без проблем додавати приклади коду чи JSON у переклади.
// translations/en/messages.php
return [
'code_example' => 'Use the format: {user[name]}',
'array_syntax' => 'Access with: $data[index]',
];
Це знімає обмеження на вміст перекладів і полегшує додавання технічних прикладів.
Pull Request: #58367
При паралельних запусках тестів скомпільовані Blade view тепер ізольовані для кожного процесу, що усуває гонки та конфлікти кешу між воркерами.
Наслідки:
Зміни працюють автоматично при використанні in-built паралельного тестування Laravel.
Pull Request: #58390
До подій черги додано додаткові властивості для кращого моніторингу та дебагу:
JobPopping тепер містить ім'я чергиJobReleasedAfterException містить тривалість backoffuse Illuminate\Queue\Events\JobPopping;
use Illuminate\Queue\Events\JobReleasedAfterException;
Event::listen(function (JobPopping $event) {
Log::debug("Popping job from queue: {$event->queue}");
});
Event::listen(function (JobReleasedAfterException $event) {
Log::info("Job released with backoff: {$event->backoff} seconds");
});
Pull Requests:
Laravel 12.48.0 містить низку змін для кращої підтримки IDE та статичного аналізу:
PendingRequest для автодоповненняNumber::abbreviate()Number::pairs()Collection::merge()PendingRequest::pool(), щоб підтримувати промісиЦе покращує роботу з PHPStan, Psalm та іншими інструментами статичного аналізу.
Pull Requests:
Продуктивність:
new $class замість reflection для швидшої інстанціації (#58391)Виправлення помилок:
restoreLock для MemoizedStore (#58423)Тестування та якість:
PendingBatchFake для підтримки фільтрації (#58375)Illuminate\Support\Str (#58365)Інші зміни:
TestResponse (#58383)Bus::chain тепер відкидає falsy-елементи (#58369)PruneCommand::isPrunable() захищеним (#58430)Stringable в Enum rule (#58392)Для типової аплікації суттєвих зламів сумісності не очікується. Перед оновленням перегляньте повний changelog.
Якщо ви використовуєте сторонні authentication guards, перевірте потоки автентифікації на сумісність з виправленнями в цьому релізі.
Хочете забезпечити повну прозорість у своїх Laravel-додатках? Пакет Laravel Audit Log допоможе вам детально відстежувати всі зміни моделей Eloquent та відповідати вимогам регуляторів. Читайте далі, щоб дізнатися, як цей потужний інструмент може підвищити надійність вашого проєкту
PHP 8.5 обіцяє безліч нових можливостей, таких як оператор Pipe, функції `array_first()` та `array_last()`, а також нове розширення URI. Чи готові ви дізнатися, як ці функції можуть спростити вашу розробку? Читайте далі, щоб дізнатися більше про ці захоплюючі нововведення
Ви готові відкрити нові горизонти у роботі з геопросторовими даними в Laravel? Дізнайтеся, як за допомогою PostGIS та пакету Laravel-Magellan можна легко зберігати, запитувати та маніпулювати інформацією про розташування, перетворюючи ваші проекти на вражаючі рішення у сфері картографії та геолокації!