Встановлення даних на флюентному екземплярі в Laravel 11.36

Перекладено ШІ 0 Laravel News 19 грудня, 2024

Цього тижня командою Laravel було випущено оновлення v11.36, яке приносить нові можливості, зокрема ланцюговий метод `Fluent::set()` і глобальний псевдонім для класу `Uri`. Долучайтеся до читання, щоб дізнатися більше про ці цікаві вдосконалення та про те, як вони можуть покращити вашу роботу з Laravel!

Цього тижня команда Laravel випустила версію v11.36, яка містить метод Fluent::set(), глобальний псевдонім для нового класу Uri та інші покращення.

# Метод Fluent::set()

Стів Бауман додав метод 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.

# Uri та UriQueryString реалізують Stringable

Люк Кузміш додав інтерфейс 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 як глобальний псевдонім за замовчуванням. Тепер ви можете безпосередньо звертатися до класу Uri без вказівки простору імен Illuminate\Support:

$uri = Uri::of('https://laravel.com')->withQuery(['name' => 'Taylor']);

Деталі можна знайти у Pull Request #53884.

# Примітки до випуску

Повний список нових функцій та оновлень ви можете знайти нижче, а також переглянути різницю між версіями 11.35.0 та 11.36.0 на GitHub. Наступні примітки про випуск прямо з changelog:

# v11.36.0

  • [11.x] Оновлено config/mail.php з підтримуваними конфігураціями @crynobone в Pull Request.
  • [11.x] Дозволено використовувати enum_value() у незалежному illuminate/collections @crynobone.
  • [11.x] Uri та UriQueryString реалізують Stringable @cosmastech.
  • [11.x] Вибір на користь new Stringable замість Str::of і str() від @lucasmichot.
  • [11.x] Немає потреби переоголошувати змінні @lucasmichot.
  • [11.x] Додано підтримку PHP 8.4 з можливістю передачі змінних @lucasmichot.
  • Додано новий клас Uri до глобальних псевдонімів @jasonmccreary.
  • [11.x] Виправлено доступ до мулятора атрибутів у loadMissing @SychO9.
  • [11.x] Виправлено numericAggregate на побудовнику Eloquent @AmirRezaM75.
  • [11.x] Вибір на користь new Fluent замість хелпера fluent() @lucasmichot.
  • Виправлення від @angelej.
  • [11.x] Collection::wrap від @lucasmichot.
  • [11.x] Підвищено мінімальну версію league/commonmark @ah-rahimi.
  • [11.x] Collection::range від @lucasmichot.
  • [11.x] Додано подію, що повідомляє про видалення файлів при виконанні команди schema:dump --prune @andrey-helldar.
  • [11.x] Виправлення: дозволяє ін'єкцію за допомогою кількох інтерфейсів з тією ж реалізацією @jamiethorpe.
  • [11.x] Ранній вихід у методі Factory::modelName() @shaedrich.
  • [11.x] Запобігти серіалізації моделей Eloquent за допомогою хелпера blank @SanderMuller.
  • [11.x] Додати перенос слів до посилань у електронній пошті @seblavoie.
  • Зберігати динамічні з'єднання з базою даних під час повторного з'єднання @nickakitch.
  • Виправити inconsistency з mutexName через різні шляхи бінарних файлів PHP на кількох серверах @waska14.
  • [11.x] Додано метод Fluent::set @stevebauman.
  • [11.x] Виправити перевірку стовпців сирих індексів @hafezdivandari.
  • [11.x] Дозволити легше переопределяти виключення при недійсному ID у прив'язці маршруту @cosmastech.
  • [11.x] Виправити значення шляху клієнта у завантаженнях файлів @gyaaniguy.

Популярні

Інше, що варто прочитати

14 Оновлено 01 червня, 2026

Як задокументувати кілька API в Laravel за допомогою Scramble

Ви знали, що в одному додатку Laravel можна реалізувати кілька API? У нашій статті ви дізнаєтеся, як за допомогою Scramble легко документувати різні версії API та налаштувати доступ до документації, щоб зробити її публічною або приватною. Читайте далі, щоб дізнатися більше

15 Оновлено 01 червня, 2026

Випущено Livewire 3.6

Laravel Livewire випустив нову версію 3.6, яка приносить з собою цікаві HTML-директиви для управління видимістю DOM-елементів і JavaScript-діями. Досліджуйте нові можливості Livewire, що допоможуть вам створити ще більш інтерактивні користувацькі інтерфейси!

18 Оновлено 01 червня, 2026

Оптимізація запитів до бази даних за допомогою скорочених методів Laravel

Laravel пропонує зручні методи для роботи з датами, які значно спрощують запити до бази даних. Досліджуйте, як ці інтуїтивно зрозумілі функції допомагають створювати чіткі та зрозумілі умови для роботи з часовими даними!