Команда Laravel випустила версію 13.16.0. Основні нововведення: команда artisan dev для керування процесами розробки, підтримка enum у запитах, метод withCookies() для всіх типів відповідей та новий array драйвер для maintenance mode у паралельних тестах.
- Команда
php artisan devдля одночасного запуску сервера, черг, логів та Vite - Метод
whenFilledEnum()для обробки типізованих enum у запитах withCookies()тепер доступний для всіх типів відповідей (раніше лише для редиректів)- Драйвер
arrayдля maintenance mode у паралельному тестуванні
# Що нового
# Команда artisan dev
У релізі з’явилася команда php artisan dev, яка паралельно запускає сервер, worker черг, логування та Vite. За замовчуванням вона працює аналогічно скрипту composer dev, але переносить конфігурацію безпосередньо в код програми замість composer.json.
Команди реєструються через клас DevCommands, зазвичай у service provider. Ви можете додавати як Artisan-команди, так і довільні shell-команди:
use Illuminate\Foundation\Console\DevCommands;
DevCommands::artisan('reverb:start');
DevCommands::register('stripe listen --forward-to ' . config('app.url'));
Опціональний другий аргумент дозволяє вказати назву процесу. Також можна призначити колір для кожного потоку:
DevCommands::artisan('reverb:start', 'reverb')->orange();
DevCommands::register('stripe listen --forward-to ' . config('app.url'))->green();
DevCommands запобігає автоматичній реєстрації команд пакетами з директорії vendor. Також додано помічник NodePackageManager, який визначає менеджер пакетів за lock-файлами (npm, yarn, pnpm або bun). Дивіться #60412.
Примітка: рекомендується оновитися до v13.16.1, де виправлено реєстрацію команди artisan dev.
# Метод whenFilledEnum() у Request
Трейт InteractsWithData отримав метод whenFilledEnum(), який автоматично конвертує значення запиту в backed enum перед викликом callback. Це позбавляє необхідності вручну використовувати tryFrom() та перевіряти значення на null:
$request->whenFilledEnum('status', Status::class, function (Status $status) use ($query): void {
$query->where('status', $status);
});
Callback виконується лише якщо ключ заповнений, клас є валідним backed enum, а значення успішно перетворюється через tryFrom(). Дивіться #60486.
# withCookies() для всіх відповідей
Метод withCookies() перенесено з RedirectResponse до ResponseTrait. Тепер можна додавати декілька cookies одним викликом до будь-якої відповіді, включно з JsonResponse:
return response()->json($data)->withCookies([$cookieA, $cookieB, $cookieC]);
Зміна повністю сумісна з попередніми версіями. Дивіться #60503.
# Драйвер array для Maintenance Mode
Додано новий драйвер array для режиму обслуговування. Він розроблений для паралельного тестування, де файловий драйвер або мокінг Cache могли спричиняти помилки під час виконання команд php artisan up та down. Дивіться #60489.
# Enums у broadcastAs()
Метод broadcastAs() в івентах тепер може повертати enum для назви події. Це забезпечує консистентність назв на стороні відправника та отримувача, аналогічно до підтримки enum в атрибуті #[Queue()]. Дивіться #60483.
# JSON Schema anyOf та безпечна десеріалізація
Компонент JsonSchema отримав підтримку anyOf. Також додано захист десеріалізатора від необмеженого розширення $ref для запобігання рекурсії. Дивіться #60509 та #60517.
# Інші виправлення та покращення
- Виправлено екранування в shell для запланованих команд, що запускаються від іншого користувача (#60469)
- Дозволено
RouteParameterвикористовувати ім'я параметра з атрибута (#60465) - Виправлено
Batchable::batchingдля завершених пакетів завдань (#60511) - Додано підтримку атрибутів черг для трейтів (#60519)
- Покращено серіалізацію HTTP-клієнта для запитів та fake-відповідей (#60522)
- Оновлено типи повернених значень у scope моделей та callback-функціях (#60481, #60513)
Посилання