Цього тижня команда Laravel презентувала версію 12.33.0, яка включає новий метод doesntContain() для Stringable, функцію об'єднання URL-параметрів у HTTP-клієнті (замість їх заміни), покращення повідомлень про помилки в BroadcastManager та інше.
Майкл Контенто додав метод 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
Кріс Джонс запропонував метод 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-параметри для повторно використовуваного запиту, ви можете вказати лише ті параметри, які повинні бути переписані.
Матіас Грімм запропонував зрозуміліші повідомлення про помилки, коли драйвер трансляції не може ініціалізуватися:
// До:
// 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. Наступні примітки взято з чек-листа:
orderByRaw з виразами — @LukeTowersStr::is*(...) — @axlonStr::apa — @balboacodesphp artisan config:cache та php artisan optimize для несеріалізованих значень — @mathiasgrimm