Gestión de atributos anidados con el método set de la clase Fluent de Laravel

  • Publicado el 23 enero, 2025
  • Palabras: 39

¿Necesita administrar atributos anidados de manera más eficaz? La clase Fluent de Laravel ahora incluye un método set() que hace que el manejo de estructuras de datos complejas sea más intuitivo.

Gestión de atributos anidados con el método set de la clase Fluent de Laravel

#Uso básico

Establezca atributos utilizando la notación de puntos:

 

$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

 

#Ejemplo práctico

A continuación se explica cómo podría usarlo en un sistema de configuración de productos:

 

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;
    }
}

// Usage
$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();

 

El método set() facilita la gestión de configuraciones anidadas complejas con una interfaz limpia y fluida.

Antonio Jenaro
Antonio Jenaro

Web Developer

Archivado en:

Fuente: Harris Raftopoulos

Artículos relacionados

Manejo fluido de arrays en Laravel, el helper fluent
486

Manejo fluido de arrays en Laravel, el helper fluent

Transforma los datos de respuesta HTTP con el método fluent de Laravel
587

Transforma los datos de respuesta HTTP con el método fluent de Laravel

Inicia la conversación

Hazte miembro de Antonio Jenaro para comenzar a comentar.

Regístrate ahora

¿Ya estás registrado? Inicia sesión