Покращене об'єднання URL-параметрів у HTTP-клієнті Laravel 12.33

Перекладено ШІ
Оригінал: Laravel News
Оновлено: 09 жовтня, 2025
Новий реліз Laravel 12.33.0 приносить ще більше зручностей для розробників із новими методами, покращеннями в роботі з HTTP-клієнтом та чіткішими повідомленнями про помилки. Чи готові ви дізнатися, які функції відкривають нові можливості для вашого проєкту? Читайте далі

Цього тижня команда 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