O que é esta biblioteca e para que serve
\n\nSpatie não é uma única biblioteca, mas sim um ecossistema inteiro de pacotes PHP de alta qualidade, desenvolvido pela empresa belga de mesmo nome. A Spatie é conhecida por sua abordagem na criação de código limpo, testável e bem documentado. Seus pacotes abrangem uma ampla gama de tarefas: desde trabalhar com arquivos de mídia e cache de consultas até gerenciar funções e permissões.
\n\nA coleção de utilitários Spatie (spatie/collection-utilities) é um conjunto de funções e classes auxiliares que expandem os recursos padrão de arrays e coleções em PHP. Ela fornece métodos convenientes para filtragem, ordenação, transformação e análise de dados, tornando o código mais legível e conciso.
\n\nPara que serve? No desenvolvimento PHP moderno (especialmente em frameworks como Laravel), trabalhar com coleções de dados é uma tarefa diária. O Spatie Collection Utilities elimina a necessidade de escrever loops e condições repetitivos, oferecendo soluções prontas e bem testadas. Isso acelera o desenvolvimento, reduz o número de erros e melhora a manutenibilidade do código.
\n\nInstalação
\n\nA instalação dos pacotes Spatie é feita através do Composer, o gerenciador de dependências padrão para PHP.
\n\ncomposer require spatie/collection-utilities\n\nSe você estiver usando Laravel, o pacote é registrado automaticamente graças ao autoload do Composer. Para outros frameworks ou PHP puro, basta adicionar require 'vendor/autoload.php'; ao seu script.
\n\nInício rápido com exemplo de código
\n\nApós a instalação, você pode começar a usar os utilitários imediatamente. A classe principal com a qual você trabalhará é Spatie\\CollectionUtilities\\Collection. Ela estende a classe padrão Illuminate\\Support\\Collection (do Laravel) ou pode ser usada como uma classe independente.
<?php\nrequire 'vendor/autoload.php';\n\nuse Spatie\\CollectionUtilities\\Collection;\n\n// Criando uma coleção\n$collection = new Collection([1, 2, 3, 4, 5, 6, 7, 8, 9, 10]);\n\n// Usando o método filter para obter números pares\n$evenNumbers = $collection->filter(fn($item) => $item % 2 === 0);\n\n// Usando o método map para multiplicar cada elemento por 2\n$doubled = $evenNumbers->map(fn($item) => $item * 2);\n\n// Usando o método toArray para converter de volta para array\nprint_r($doubled->toArray());\n// Saída: Array ( [0] => 4 [1] => 8 [2] => 12 [3] => 16 [4] => 20 )\n?>\n\nEste exemplo simples demonstra o encadeamento de métodos, que é uma característica chave do trabalho com coleções Spatie.
\n\nPrincipais métodos/funções
\n\n1. filter()
\nO que faz: Filtra a coleção usando uma função de callback. Retorna apenas os elementos para os quais o callback retornou true.
Parâmetros:
\n- \n
callback(callable): Função que recebe o elemento atual e sua chave. Deve retornartrueoufalse. \n mode(int): Opcional. Modo de filtragem (padrãoARRAY_FILTER_USE_BOTH). \n
Exemplo 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 com Alice e Charlie\n\n2. map()
\nO que faz: Aplica uma função de callback a cada elemento da coleção e retorna uma nova coleção com os elementos transformados.
\nParâmetros:
\n- \n
callback(callable): Função que recebe o elemento atual e sua chave. Deve retornar o valor transformado. \n
Exemplo de código funcional:
\Também na biblioteca
Winston para JavaScript (Node.js): guia completo com exemplos
Envio de email em Swift (iOS/macOS): MFMailComposeViewController e SMTP
Trabalhando com Kafka em Rust: bibliotecas rdkafka e Franz