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

Перекладено ШІ
Оригінал: 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 ви можете створювати елегантні системи конфігурації, які залишаються читабельними навіть тоді, коли їхня складність зростає. Цей підхід усуває необхідність у вкладеній ініціалізації масивів і надає чистий інтерфейс для управління пов'язаними даними.