Manipulando atributos aninhados com o método Fluent set do Laravel

Laravel PHP Tutoriais
Manipulando atributos aninhados com o método Fluent set do Laravel

Trabalhar com estruturas de dados aninhadas ficou mais fácil com a classe Fluent do Laravel e seu método set(). Esse recurso fornece uma abordagem mais intuitiva para gerenciar atributos aninhados e complexos em seus aplicativos. Em vez de lidar com inicialização e acesso de arrays complicados, você pode aproveitar a notação de ponto para criar e interagir com estruturas multinível perfeitamente.

$fluent = new Fluent;
 
// Basic attributes
$fluent->set('product', 'iPhone')
->set('version', 15);
 
// Nested attributes
$fluent->set('specs.color', 'Space Black')
->set('specs.price.usd', 1199);
 
// Access values
echo $fluent->product; // "iPhone"
echo $fluent->get('specs.color'); // "Space Black"
echo $fluent->specs['price']['usd']; // 1199

A notação de ponto torna especialmente conveniente trabalhar com estruturas de dados multinível sem precisar criar cada nível explicitamente.

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();

Com o método Fluent set(), você pode criar sistemas de configuração elegantes que mantêm a legibilidade mesmo quando a complexidade aumenta. Essa abordagem elimina a necessidade de inicialização de array aninhado e fornece uma interface limpa para gerenciar dados relacionados.