Цього тижня команда Laravel презентувала версію 12.33.0, яка включає новий метод doesntContain() для Stringable, функцію об'єднання URL-параметрів у HTTP-клієнті (замість їх заміни), покращення повідомлень про помилки в BroadcastManager та інше.
# Метод Stringable doesntContain()
Майкл Контенто додав метод doesntContain() до Stringable для забезпечення симетрії з існуючим методом contains().
$str = str('laravel-news.com');
$str->contains('laravel'); // true
$str->doesntContain('laravel'); // false
$str->doesntContain('NEWS'); // true
$str->doesntContain('NEWS', ignoreCase: true); // false
# HTTP-клієнт: об'єднання параметрів
Кріс Джонс запропонував метод mergeUrlParameters() для PendingRequest, оскільки withUrlParameters замінює всі параметри. Тейлор Отвел оновив PR, щоб завжди об'єднувати параметри, а не створювати новий метод:
Http::macro('service', function () {
return Http::baseUrl('https://api.example.com')
->withUrlParameters(['version' => 'v1', 'tenant' => 'acme']);
});
// До: <12.33, `version` видаляється.
Http::service()->withUrlParameters(['tenant' => 'beta']);
// ['tenant' => 'beta']
// Після: +12.33, параметри об'єднуються.
Http::service()->withUrlParameters(['tenant' => 'beta']);
// ['version' => 'v1', 'tenant' => 'beta']
Зміна в withUrlParameters() не призводить до розриву сумісності: якщо потрібно налаштувати URL-параметри для повторно використовуваного запиту, ви можете вказати лише ті параметри, які повинні бути переписані.
# Покращення повідомлень про помилки в BroadcastManager
Матіас Грімм запропонував зрозуміліші повідомлення про помилки, коли драйвер трансляції не може ініціалізуватися:
// До:
// TypeError: Pusher\Pusher::__construct(): Аргумент #3 ($app_id) повинен бути типу string, передано null
// Після:
// BroadcastException: Не вдалося створити транслятор для з'єднання "my-connection" з помилкою:
// Pusher\Pusher::__construct(): Аргумент #3 ($app_id) повинен бути типу string, передано null
# Примітки щодо випуску
Повний список нових функцій та оновлень ви можете знайти нижче, а також зміни між версіями 12.32.0 та 12.33.0 на GitHub. Наступні примітки взято з чек-листа:
# v12.33.0
- Виправлення компіляції запитів із використанням
orderByRawз виразами — @LukeTowers - [12.x] Вузький тип після перевірки
Str::is*(...)— @axlon - [12.x] Виправлення недійсного докблоку — @tm1000
- [12.x] Рефакторинг switch на match — @amirhshokri
- [12.x] Виправлення проблеми з загостреннями в компоненті виключення — @AhmedAlaa4611
- [12.x] Переконатися, що виклик завдання в групі працює так, як очікується — @jackbayliss
- Виправлення: видалено повторюване слово в методі
Str::apa— @balboacodes - Рефакторинг: додано |null у докблок — @alipowerful7
- [12.x] Покращення повідомлень про помилки
php artisan config:cacheтаphp artisan optimizeдля несеріалізованих значень — @mathiasgrimm - [12.x] Переконатися, що тривалість cookie відповідає тривалості сесії в проміжному ПЗ StartSession — @michaelcontento
- Запуск тестів на версії PostgreSQL 18 — @JurianArie
- [12.x] Зменшити повторні вставки в тестах — @cosmastech
- [12.x] Виправлення використання директиви blade pushIf з комплексними умовами (#57264) — @hosni
- [12.x] Додати Stringable::doesntContain() для симетрії API — @michaelcontento
- [12.x] Покращення повідомлень про помилки BroadcastManager при спробі отримати Broadcaster — @mathiasgrimm
- [12.x] HTTP-клієнт: додано mergeUrlParameters() для об'єднання URL-параметрів без їх переписування — @leek