Управління вкладеними атрибутами за допомогою методу Fluent Set у Laravel

0
Перекладено ШІ
Оригінал: Laravel News
Оновлено: 25 березня, 2025
Оптимізація роботи з вкладеними структурами даних у Laravel завдяки класу Fluent та методу set() відкриває нові горизонти для розробників. Дізнайтеся, як використання крапкової нотації спрощує управління складними атрибутами та робить код більш читабельним

Робота з вкладеними структурами даних стала простішою завдяки класу Fluent у Laravel та його методу set(). Ця функція пропонує інтуїтивний підхід до керування складними, вкладеними атрибутами у вашій програмі. Замість незграбної ініціалізації масивів та доступу до них ви можете використовувати точкову нотацію для простого створення та взаємодії з багаторівневими структурами.

$fluent = new Fluent;
 
// Основні атрибути
$fluent->set('product', 'iPhone')
    ->set('version', 15);
 
// Вкладені атрибути
$fluent->set('specs.color', 'Space Black')
    ->set('specs.price.usd', 1199);
 
// Доступ до значень
echo $fluent->product;                    // "iPhone"
echo $fluent->get('specs.color');         // "Space Black"
echo $fluent->specs['price']['usd'];      // 1199

Точкова нотація спрощує роботу з багаторівневими структурами даних, не вимагаючи явного створення кожного рівня.

class ProductConfigurator
{
    private $config;
 
    public function __construct()
    {
        $this->config = new Fluent;
    }
 
    public function setBasicDetails(string $name, string $sku)
    {
        $this->config
            ->set('product.name', $name)
            ->set('product.sku', $sku)
            ->set('product.created_at', now());
 
        return $this;
    }
 
    public function setPricing(float $base, array $taxes)
    {
        $this->config
            ->set('pricing.base', $base)
            ->set('pricing.taxes', $taxes)
            ->set('pricing.total', $base + array_sum($taxes));
 
        return $this;
    }
 
    public function setShipping(array $dimensions, float $weight)
    {
        $this->config
            ->set('shipping.dimensions', $dimensions)
            ->set('shipping.weight', $weight)
            ->set('shipping.requires_special', $weight > 20);
 
        return $this;
    }
 
    public function getConfiguration()
    {
        return $this->config;
    }
}
 
$configurator = new ProductConfigurator();
$product = $configurator
    ->setBasicDetails('Gaming Laptop', 'LAP-2024-001')
    ->setPricing(999.99, ['vat' => 199.99])
    ->setShipping(['length' => 15, 'width' => 10], 2.5)
    ->getConfiguration();

З методом set() у класі Fluent ви можете створювати елегантні системи конфігурації, які залишаються читабельними навіть тоді, коли їхня складність зростає. Цей підхід усуває необхідність у вкладеній ініціалізації масивів і надає чистий інтерфейс для управління пов'язаними даними.

Популярні

Logomark Logotype

Що нового в PHP 8.5

PHP 8.5 обіцяє безліч нових можливостей, таких як оператор Pipe, функції `array_first()` та `array_last()`, а також нове розширення URI. Чи готові ви дізнатися, як ці функції можуть спростити вашу розробку? Читайте далі, щоб дізнатися більше про ці захоплюючі нововведення

Logomark Logotype

Перетворення даних у типобезпечні DTO за допомогою пакету Data Model

Досліджуйте новий пакет Data Model для PHP, який спрощує процес гідратації об'єктів без зайвих складнощів! Дізнайтеся, як впровадження типобезпечних об'єктів може революціонізувати ваш підхід до розробки, читаючи нашу статтю

Logomark Logotype

Створення CLI-додатка за допомогою Laravel та Docker

Зазирніть у світ Laravel, де потужний CLI-фреймворк відкриває нові можливості для розробки командного інтерфейсу. Дізнайтеся, як створити просту утиліту для перевірки акцій, яка працює з Docker, та які переваги це може принести у вашому проєкті!