Цього тижня команда Laravel випустила версію 12.37.0, в якій з'явилися новий драйвер фонових черг, метод вставки в Factory, ряд рядкових функцій, зокрема ucwords(), та інші нововведення
# Обробка чергових завдань у фоновому режимі
Barry vd. Heuvel запропонував драйвер черг, який відправляє завдання у фоновий режим за допомогою Concurrently::defer(). Завдання серіалізується та виконується з процесу PHP:
Цей драйвер, подібно до попереднього, відправляє завдання у фон, але використовує
Concurrently::defer()замість звичайного відкладання. Це означає, що завдання буде серіалізоване і виконуватиметься з PHP-процесу, що може бути більш підходящим для "важчих" чи триваліших запитів.Сценарії використання будуть схожими на
Concurrently::defer(), але спрощені у вигляді завдання.
RecordDelivery::dispatch($order)->onConnection('background');
Детальніше ознайомитися з документацією з відкладеного виконання
# Додавання параметра "глибини" для методів files() і directories() файлів файлової системи
Andrew Brown реалізував можливість передавати необов'язковий параметр глибини в методи файлової системи. Це оновлення зворотно сумісне, оскільки значення за замовчуванням — 0, що раніше було закодованим значенням глибини.
use Illuminate\Support\Facades\Storage;
$files = Storage::files($directory, depth: 2);
$directories = Storage::directories($directory, depth: 2);
# Метод вставки в Factory
Luke Kuzmish додав метод Factory::insert(), який дозволяє масову вставку моделей. При використанні методу create для великої кількості записів вони вставляються через окремі запити:
User::factory()->count(100)->create();
// Масова вставка записів моделей
User::factory()->count(100)->insert($attributes = [], $parent = null);
При використанні методу insert() події моделі не генеруються.
# Поліпшення JSON-схем
Timo Mühlbach вніс зміни в реалізацію JSON-схеми, додавши підтримку задніх енумів та метод форматування для StringType:
// Enum до
$schema->string('oneof')->enum(['a', 'b', 'c']);
// Після
$schema->string('oneof')->enum(Options::class);
// Додаємо метод `format()` для `StringType`
$schema->string('somedate')->format('date');
# Додавання методу ucwords() до Stringable
@braxey реалізував метод ucwords() у класах Str та Stringable:
Str::ucwords('laravel framework'); // Laravel Framework
str('laravel frameWork')->lower()->ucwords(); // Laravel Framework
# Поліпшення команди About
Chinmay Purav оновив команду php artisan about, щоб надавати детальну інформацію про драйвери резервного копіювання:
- Резервне копіювання кешу
- Резервне копіювання черг
- Резервне копіювання електронної пошти та round-robin
Ознайомитися зі скріншотами можна у Pull Request #57579, #57582 та #57590.
# Примітки до випуску
Повний перелік нових функцій і оновлень ви можете знайти нижче, а також ви можете переглянути зміни між 12.36.0 та 12.37.0 на GitHub. Нижче наведені примітки до випуску з журналу змін:
# v12.37.0
- [12.x] можливість передавати користувацьку "глибину" для
files()іdirectories()від @browner12 за https://github.com/laravel/framework/pull/57573 - [12.x] EnumerateValues::value() підтримує об’єкти і повертає негативні значення від @rafaelqueiroz в https://github.com/laravel/framework/pull/57570
- [12.x] Перенесення дублікатів логіки у окремий метод для повторного використання від @shaedrich в https://github.com/laravel/framework/pull/57564
- [12.x] Рефакторинг невипущеного допоміжного методу data_has від @rodrigopedra в https://github.com/laravel/framework/pull/57580
- feat: додано подробиці для драйвера резервного копіювання кешу від @chinmaypurav в https://github.com/laravel/framework/pull/57579
- [12.x] виправлено порожню перевірку у data_has від @rodrigopedra в https://github.com/laravel/framework/pull/57586
- [12.x] Виправлення: перевірка на непорожній рядок із використанням trim від @alipowerful7 в https://github.com/laravel/framework/pull/57583
- feat: додано подробиці для драйвера резервного копіювання черг від @chinmaypurav в https://github.com/laravel/framework/pull/57582
- feat: додані деталі для відправників електронної пошти у контексті резервного копіювання або round-robin від @chinmaypurav в https://github.com/laravel/framework/pull/57590
- [12.x] Рефакторинг: видалити невикористовувану змінну від @alipowerful7 в https://github.com/laravel/framework/pull/57617
- [12.x]
Factory@insert()від @cosmastech в https://github.com/laravel/framework/pull/57600 - Виправлення ScheduleRunCommandTest для Windows за допомогою специфічної для ОС команди успіху від @Tina-1300 в https://github.com/laravel/framework/pull/57621
- [12.x] Додано ucwords у Str та Stringable від @braxey в https://github.com/laravel/framework/pull/57581
- [12.x] покращено документування
Connection@listen()від @cosmastech в https://github.com/laravel/framework/pull/57633 - [12.x] Виправлення: Коректне повернення до з'єднання/черги сповіщення при використанні viaConnections/viaQueues від @aydinfatih в https://github.com/laravel/framework/pull/57625
- [12.x] Видалення невикористаних параметрів у DatabaseServiceProvider від @sumaiazaman в https://github.com/laravel/framework/pull/57644
- [12.x] Тести черги для Redis Cluster пропущені QUEUE_CONNECTION від @vadimonus в https://github.com/laravel/framework/pull/57641
- рефакторинг: видалити невикористаний параметр у ArtisanServiceProvider від @omarchouman в https://github.com/laravel/framework/pull/57658
- [12.x] Переконатися, що користувацькі повідомлення про помилки працюють для правила File від @jackbayliss в https://github.com/laravel/framework/pull/57656
- Feature/json schema improvements від @Anticom в https://github.com/laravel/framework/pull/57609
- Обробка чергових завдань у фоновому режимі (Concurrently::defer()) від @barryvdh в https://github.com/laravel/framework/pull/57648
- [12.x] ChainedBatch зберігає чергу та з'єднання обгорнутого пакету від @vadimonus в https://github.com/laravel/framework/pull/57630