Paquetes Spatie para PHP: guía completa con ejemplos

Entrenador de Python en Línea para Principiantes

Aprende Python fácilmente sin sobrecargarte de teoría. Resuelve tareas prácticas con verificación automática, recibe pistas y escribe código directamente en el navegador, sin instalar nada.

Start Course

¿Qué es esta biblioteca y para qué sirve?

\n\n

Spatie no es una sola biblioteca, sino todo un ecosistema de paquetes PHP de alta calidad, desarrollado por la empresa belga del mismo nombre. Spatie es conocida por su enfoque en la creación de código limpio, comprobable y bien documentado. Sus paquetes cubren una amplia gama de tareas: desde trabajar con archivos multimedia y almacenamiento en caché de consultas hasta la gestión de roles y permisos.

\n\n

La colección de utilidades de Spatie (spatie/collection-utilities) es un conjunto de funciones y clases auxiliares que amplían las capacidades estándar de arrays y colecciones en PHP. Proporciona métodos convenientes para filtrar, ordenar, transformar y analizar datos, haciendo que el código sea más legible y conciso.

\n\n

¿Para qué sirve? En el desarrollo moderno de PHP (especialmente en frameworks como Laravel), trabajar con colecciones de datos es una tarea cotidiana. Spatie Collection Utilities elimina la necesidad de escribir bucles y condiciones repetitivos, ofreciendo soluciones listas y bien probadas. Esto acelera el desarrollo, reduce la cantidad de errores y mejora la mantenibilidad del código.

\n\n

Instalación

\n\n

La instalación de los paquetes Spatie se realiza a través de Composer, el gestor de dependencias estándar para PHP.

\n\n
composer require spatie/collection-utilities
\n\n

Si usas Laravel, el paquete se registra automáticamente gracias a la autocarga de Composer. Para otros frameworks o PHP puro, simplemente añade require 'vendor/autoload.php'; en tu script.

\n\n

Inicio rápido con un ejemplo de código

\n\n

Después de la instalación, puedes empezar a usar las utilidades de inmediato. La clase principal con la que trabajarás es Spatie\\CollectionUtilities\\Collection. Extiende la clase estándar Illuminate\\Support\\Collection (de Laravel) o se puede usar como una clase independiente.

\n\n
<?php\nrequire 'vendor/autoload.php';\n\nuse Spatie\\CollectionUtilities\\Collection;\n\n// Creamos una colección\n$collection = new Collection([1, 2, 3, 4, 5, 6, 7, 8, 9, 10]);\n\n// Usamos el método filter para obtener números pares\n$evenNumbers = $collection->filter(fn($item) => $item % 2 === 0);\n\n// Usamos el método map para multiplicar cada elemento por 2\n$doubled = $evenNumbers->map(fn($item) => $item * 2);\n\n// Usamos el método toArray para convertir de nuevo a array\nprint_r($doubled->toArray());\n// Salida: Array ( [0] => 4 [1] => 8 [2] => 12 [3] => 16 [4] => 20 )\n?>
\n\n

Este sencillo ejemplo demuestra el encadenamiento de métodos, que es una característica clave al trabajar con colecciones de Spatie.

\n\n

Métodos/funciones principales

\n\n

1. filter()

\n

Qué hace: Filtra la colección usando una función callback. Devuelve solo aquellos elementos para los cuales el callback devolvió true.

\n

Parámetros:

\n
    \n
  • callback (callable): Función que recibe el elemento actual y su clave. Debe devolver true o false.
  • \n
  • mode (int): Opcional. Modo de filtrado (por defecto ARRAY_FILTER_USE_BOTH).
  • \n
\n

Ejemplo de código funcional:

\n
$users = new Collection([\n    ['name' => 'Alice', 'age' => 25],\n    ['name' => 'Bob', 'age' => 17],\n    ['name' => 'Charlie', 'age' => 30],\n]);\n\n$adults = $users->filter(fn($user) => $user['age'] >= 18);\n// Resultado: Collection con Alice y Charlie
\n\n

2. map()

\n

Qué hace: Aplica una función callback a cada elemento de la colección y devuelve una nueva colección con los elementos transformados.

\n

Parámetros:

\n
    \n
  • callback (callable): Función que recibe el elemento actual y su clave. Debe devolver el valor transformado.
  • \n
\n

Ejemplo de código funcional:

\

Recommendations