Qué es la clase Fluent
La claseFluent 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.
Crear instancias
Constructor
Método factory make()
Helper fluent()
En Laravel 11 se añadió el helperfluent(). 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.
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
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 implementaArrayAccess, 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 implementaJsonSerializable, se puede convertir directamente con json_encode().
Comprobación de estado
isEmpty() / isNotEmpty()
Trait Conditionable
Fluent usa el traitConditionable, lo que le permite ejecutar procesamiento condicional.
when() / unless() puedes escribir configuraciones condicionales de forma fluida.
Trait Macroable
Fluent también usa el traitMacroable, 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
__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.
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.