Skip to main content

Qué es la clase Fluent

La clase Fluent es una utilidad genérica que permite tratar un array como si fuera un objeto. Está implementada en Illuminate\Support\Fluent y existe desde las primeras versiones de Laravel, aunque la documentación oficial apenas la menciona. Internamente gestiona un array como una propiedad y, mediante métodos mágicos (__get / __set / __call), permite leer y escribir como si fueran propiedades.
En Laravel 11 se añadió el helper fluent() y se reforzaron las funcionalidades de la clase Fluent, así que ahora es el momento perfecto para aprovechar esta gran clase.

Crear instancias

Constructor

Método factory make()

Helper fluent()

En Laravel 11 se añadió el helper fluent(). Es equivalente a Fluent::make().

Acceso a las propiedades

Lectura y escritura de propiedades dinámicas

Encadenamiento de métodos

Gracias al método mágico __call, si llamas a un método inexistente se establece una propiedad. Como el método devuelve $this, puedes encadenarlos.
De esta manera puedes definir valores mediante una API fluida (Fluent Interface) en lugar de con un array.

Métodos principales

get() — acceso con notación de puntos

set() — asignación con notación de puntos

fill() — establecer varias propiedades a la vez

all() — obtener todas las propiedades como array

scope() — convertir un valor anidado en un nuevo Fluent

Así puedes tratar arrays anidados como otros objetos Fluent independientes.

value() — valor por defecto dinámico con callback

Operaciones sobre el array

toArray() — convertir a array

getAttributes() — acceder directamente a los atributos internos

Interfaz ArrayAccess

Como Fluent implementa ArrayAccess, puedes usarlo como si fuera un array.

Interfaz IteratorAggregate

Fluent se puede recorrer con foreach.

Manejo de JSON

toJson() — convertir a cadena JSON

toPrettyJson() — convertir a JSON con formato

Interfaz JsonSerializable

Como Fluent implementa JsonSerializable, se puede convertir directamente con json_encode().

Comprobación de estado

isEmpty() / isNotEmpty()

Trait Conditionable

Fluent usa el trait Conditionable, lo que le permite ejecutar procesamiento condicional.
Con when() / unless() puedes escribir configuraciones condicionales de forma fluida.

Trait Macroable

Fluent también usa el trait Macroable, así que puedes añadirle métodos de forma dinámica.

Casos de uso prácticos

Constructor de respuestas de API

Constructor de configuración

Validación y transformación de parámetros de petición

Combinar un modelo con Fluent

Normalización de datos de formulario

Comparativa con otras clases

Fluent vs Array

Fluent vs Modelo

Detalles de la implementación interna

Si no hay una macro registrada, __call toma el nombre del método como clave y almacena el valor en los atributos, devolviendo $this. Esto es lo que hace posible el encadenamiento.
Fluent utiliza los siguientes traits, cada uno de los cuales aporta funcionalidades diferentes:
  • Conditionable — Procesamiento condicional con when() / unless().
  • InteractsWithData — Métodos para manipular datos como data().
  • Macroable — Añadir métodos de forma dinámica.

Próximos pasos

Clase Collection

Profundiza en la clase Collection para manejar múltiples elementos.

Trait Conditionable

Aprende el trait Conditionable para escribir procesamiento condicional de forma fluida.

Trait Macroable

Aprende el trait Macroable para añadir métodos dinámicamente a clases existentes.
Última modificación el 13 de julio de 2026