Цього тижня команда Laravel випустила версію v11.36, яка містить метод Fluent::set()
, глобальний псевдонім для нового класу Uri
та інші покращення.
Стів Бауман додав метод Fluent::set()
, який дозволяє встановлювати глибоко вкладені атрибути за допомогою ланцюгового виклику та нотації з крапкою:
$fluent = new Fluent;
// Встановлення основних атрибутів
$fluent->set('product', 'iPhone')
->set('version', 15)
->set('developer', 'Apple');
// Використання нотації з крапкою для вкладених атрибутів
$fluent->set('specs.color', 'Space Black')
->set('specs.storage', '256GB')
->set('specs.price.usd', 1199);
// Отримання значень
echo $fluent->product; // "iPhone"
echo $fluent->specs['color']; // "Space Black"
echo $fluent->specs['price']['usd']; // 1199
// Отримання значень за допомогою get з нотацією з крапкою
echo $fluent->get('specs.color'); // "Space Black"
echo $fluent->get('specs.price.usd'); // 1199
Реалізація використовує функцію Laravel data_set()
, яка є корисним інструментом для роботи з вкладеними масивами:
$data = ['products' => ['desk' => ['price' => 100]]];
data_set($data, 'products.desk.price', 200);
data_get($data, 'products.desk.price'); // 200
Деталі про встановлення даних у екземплярі Fluent
можна знайти у Pull Request #53946.
Люк Кузміш додав інтерфейс Stringable для класів Uri
та UriQueryString
. Ці класи вже реалізують інтерфейс Stringable
, що включає метод __toString()
:
use Illuminate\Support\Uri;
$uri = Uri::of('https://laravel.com')
->withQuery(['name' => 'Taylor'])
->withPath('/docs/installation')
->withFragment('hello-world');
// https://laravel.com/docs/installation?name=Taylor#hello-world
(string) $uri;
Дізнайтеся більше про можливості розбору та модифікації URI у публікації про версію Laravel v11.35.
Джейсон Маккрейрі додав новий клас Uri
як глобальний псевдонім за замовчуванням. Тепер ви можете безпосередньо звертатися до класу Uri
без вказівки простору імен Illuminate\Support
:
$uri = Uri::of('https://laravel.com')->withQuery(['name' => 'Taylor']);
Деталі можна знайти у Pull Request #53884.
Повний список нових функцій та оновлень ви можете знайти нижче, а також переглянути різницю між версіями 11.35.0 та 11.36.0 на GitHub. Наступні примітки про випуск прямо з changelog:
config/mail.php
з підтримуваними конфігураціями @crynobone в Pull Request.enum_value()
у незалежному illuminate/collections
@crynobone.Uri
та UriQueryString
реалізують Stringable
@cosmastech.new Stringable
замість Str::of
і str()
від @lucasmichot.Uri
до глобальних псевдонімів @jasonmccreary.loadMissing
@SychO9.numericAggregate
на побудовнику Eloquent @AmirRezaM75.new Fluent
замість хелпера fluent()
@lucasmichot.Collection::wrap
від @lucasmichot.Collection::range
від @lucasmichot.schema:dump --prune
@andrey-helldar.blank
@SanderMuller.Fluent::set
@stevebauman.