Цього тижня команда Laravel випустила версію 12.34.0, що включає новий драйвер запасного черги, покращення повнотекстового пошуку в базах даних через Laravel Scout, відкладений пакет HTTP-клієнта та інші нововведення
# Драйвер запасного черги
Тейлор Отвелл додав драйвер failover, який забезпечує автоматичний перехід на інший чергу у випадку збою основного з’єднання. Якщо основний драйвер не працює, запасний драйвер перенесе завдання до наступного налаштованого з’єднання
'failover' => [
'driver' => 'failover',
'connections' => [
env('QUEUE_CONNECTION', 'database'),
'sync',
],
],
Деталі реалізації можна знайти у Pull Request #57341. Також, щоб дізнатися, як налаштувати драйвер failover, перегляньте документацію по чергах
# Поліпшення повнотекстового пошуку в Laravel Scout
Тейлор Отвелл додав поліпшення повнотекстового пошуку для двигуна database в Laravel Scout. При використанні Postgres, якщо інший порядок не визначено, він автоматично використовує порядок за релевантністю, що відповідає поведінці MySQL
Якщо ви користуєтеся Laravel Scout, оновіть до останньої версії через Composer, щоб отримати ці нововведення. Деталі можна знайти у Pull Request #947
# Оновлення підтримки редакторів на локальній сторінці винятків
Група розробників додала підтримку нових посилань на редактори на локальній сторінці винятків. Ви можете налаштувати значення app.editor відповідно до підтримуваних посилань, знайдених у ResolvesDumpSource.php
Ось список нових редакторів, доданих у Laravel 12.34:
- Zed: Pull Request #57298
- Trae IDE: Pull Request #57300
- Windsurf IDE: Pull Request #57359
- Kiro: Pull Request #57363
- Fleet: Pull Request #57377
# Підтримка Closure для throw_if
Кріс Пейдж запропонував підтримку Closure для параметра винятку throw_if:
// Обгортка в Closure забезпечує виконання лише за умови істинності
throw_if($apiResponse instanceof CustomResponse, fn() => new \Exception($apiResponse->message));
# Метод defer для HTTP-пакетів
Венделл Адріель раніше додав метод пакетних запитів Http Client у Laravel 12.32. У цій версії він додав метод defer(), що дотримується аналогічного шаблону, використаного в Concurrency
Цей метод корисний, якщо ви хочете пакетувати запити після повернення відповіді, але активувати дії за допомогою хуків:
Http::batch(fn (Batch $batch) => [
$batch->get('https://example.com/endpoint-1'),
$batch->get('https://example.com/endpoint-2'),
])->before(function (Batch $batch) {
// Пакет створено, але запити ще не ініціалізовано...
})->progress(function (Batch $batch, int|string $key, Response $response) {
// Один із запитів успішно завершено...
})->then(function (Batch $batch, array $results) {
// Усі запити успішно завершено...
})->catch(function (Batch $batch, int|string $key, Response|RequestException $response) {
// Виявлено невдачу першого запиту в партії...
})->finally(function (Batch $batch, array $results) {
// Пакет завершив виконання...
})->defer();
Детальніше в Pull Request #57387
# Примітки до випуску
Повний список нових функцій і оновлень можна переглянути нижче, а також різницю між версіями 12.33.0 і 12.34.0 на GitHub. Наступні примітки до випуску безпосередньо з змін:
# v12.34.0
- [12.x] Віртуальні колонки PostgreSQL від @tpetry в https://github.com/laravel/framework/pull/57290
- [12.x] Зробити генерацію шляху активу Vite розширювальною через успадкування від @daun в https://github.com/laravel/framework/pull/57292
- [12.x] Поліпшення документування
Str, пов'язане з фабриками від @cosmastech в https://github.com/laravel/framework/pull/57297 - Додати відсутній метод waitUntil до FakeInvokedProcess від @yondifon в https://github.com/laravel/framework/pull/57030
- Додати підтримку редактора Zed в ResolvesDumpSource від @miguilimzero в https://github.com/laravel/framework/pull/57298
- [12.x] Видалити залишковий обхід від @AhmedAlaa4611 в https://github.com/laravel/framework/pull/57306
- Виправити порядок типу повернення у підписі функції view від @MadBox-99 в https://github.com/laravel/framework/pull/57304
- Додати підтримку
Trae IDEна локальній сторінці винятків від @sajjadhossainshohag в https://github.com/laravel/framework/pull/57300 - [12.x] Додати підтримку enum до
Schedule::useCache()від @amirhshokri в https://github.com/laravel/framework/pull/57311 - [12.x] Виправити залишкові попередження PHP 8.5 про null index array від @IonBazan в https://github.com/laravel/framework/pull/57308
- Генерувати нову сесію під час Auth::login() від @valorin в https://github.com/laravel/framework/pull/57204
- [12.x] Форматування від @AhmedAlaa4611 в https://github.com/laravel/framework/pull/57321
- Оновити колір тексту в мінімальному вигляді помилки для покращення доступності від @FoksVHox в https://github.com/laravel/framework/pull/57318
- [12.x] Виправити обрізання тексту на запитах з підсвічуванням синтаксису від @avosalmon в https://github.com/laravel/framework/pull/57315
- [12.x] Виправити повідомлення про правило електронної пошти від @erik-perri в https://github.com/laravel/framework/pull/57323
- [12.x] Не припускати, що
Str::uuid()повертаєStringableвід @cosmastech в https://github.com/laravel/framework/pull/57340 - [12.x] Додати відсутню анотацію @throws для Arr від @AhmedAlaa4611 в https://github.com/laravel/framework/pull/57336
- [12.x] Використовувати FQCN у документації від @AhmedAlaa4611 в https://github.com/laravel/framework/pull/57335
- [12.x] feat: Додати підтримку користувацької відповіді без зміни обробника винятків від @chuoke в https://github.com/laravel/framework/pull/57342
- [12.X] Додати підтримку редактора windsurf в ResolvesDumpSource від @Sajid-al-islam в https://github.com/laravel/framework/pull/57359
- [12.x] Розгорнути однорядний масив в багаторядний від @AhmedAlaa4611 в https://github.com/laravel/framework/pull/57350
- [12.x] Додати підтримку редактора Kiro в
ResolvesDumpSourceвід @OmarFaruk-0x01 в https://github.com/laravel/framework/pull/57363 - [12.x] Виправити формат списку розкладу у CLI в багатомовному режимі від @jamessa в https://github.com/laravel/framework/pull/57367
- Прототип драйвера запасного черги від @taylorotwell в https://github.com/laravel/framework/pull/57341
- Додати підтримку редактора Fleet в ResolvesDumpSource від @Rakib01 в https://github.com/laravel/framework/pull/57377
- Дозволити Closure при виклику throw_if від @chrispage1 в https://github.com/laravel/framework/pull/57349
- [12.x] Додати метод defer до HTTP пакету від @WendellAdriel в https://github.com/laravel/framework/pull/57387
- [12.x] Підтримка PHPUnit 12.4 від @crynobone в https://github.com/laravel/framework/pull/57388
- [12.x] Http::batch - виправити проблему, коли недійсне URL-адресу не активує хук catch від @WendellAdriel в https://github.com/laravel/framework/pull/57386