Цього тижня команда 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.Ви знали, що в одному додатку Laravel можна реалізувати кілька API? У нашій статті ви дізнаєтеся, як за допомогою Scramble легко документувати різні версії API та налаштувати доступ до документації, щоб зробити її публічною або приватною. Читайте далі, щоб дізнатися більше
Laravel Livewire випустив нову версію 3.6, яка приносить з собою цікаві HTML-директиви для управління видимістю DOM-елементів і JavaScript-діями. Досліджуйте нові можливості Livewire, що допоможуть вам створити ще більш інтерактивні користувацькі інтерфейси!
Laravel пропонує зручні методи для роботи з датами, які значно спрощують запити до бази даних. Досліджуйте, як ці інтуїтивно зрозумілі функції допомагають створювати чіткі та зрозумілі умови для роботи з часовими даними!