Onde aprender React ?
Vamos lá! Em um dia qualquer estava eu a rolar o feed do Linked-In e um determinado post me chamou... Leia mais
Desenvolvedor de Software
Ao desenvolver aplicações modernas com PHP, uma das tarefas mais comuns é manipular arrays — filtrando, transformando ou agrupando dados. Embora o PHP nativamente ofereça funções poderosas para isso, como array_map, array_filter e array_reduce, o Laravel introduz um recurso que torna esse trabalho mais fluido e expressivo: as Collections.
No Laravel, uma Collection é um objeto da classe Illuminate\Support\Collection que encapsula arrays e oferece uma interface fluente, orientada a métodos, para manipular dados. Em vez de trabalhar diretamente com arrays e funções avulsas, você passa a usar métodos encadeáveis, como filter(), map(), pluck(), groupBy() e muitos outros.
Exemplo simples:
$nomes = collect(['Ana', 'Bruno', 'Carlos'])
->map(fn($nome) => strtoupper($nome))
->reject(fn($nome) => $nome === 'BRUNO');
print_r($nomes->all()); // ['ANA', 'CARLOS']
Leitura fluente e expressiva: o código se torna mais fácil de ler e manter.
Encadeamento de métodos: facilita a composição de transformações complexas.
Consistência: evita erros comuns com manipulação direta de arrays.
Você pode criar uma collection com o helper global collect():
$dados = collect([1, 2, 3, 4, 5]);
Além disso, muitos métodos internos do Laravel já retornam collections. Por exemplo, uma consulta com Eloquent retorna uma Collection de modelos:
$usuarios = User::where('ativo', true)->get(); // Retorna uma Collection
| Método | Descrição |
|---|---|
map() |
Transforma os itens da collection |
filter() |
Filtra os itens com base numa condição |
pluck() |
Extrai um campo de cada item da collection |
groupBy() |
Agrupa itens com base em uma chave |
each() |
Itera sobre cada item da collection |
first() |
Retorna o primeiro item que satisfaz uma condição |
contains() |
Verifica se um item está presente |
sortBy() |
Ordena os itens com base em uma chave |
Exemplo com groupBy:
$usuarios = collect([
['nome' => 'Ana', 'setor' => 'RH'],
['nome' => 'Bruno', 'setor' => 'TI'],
['nome' => 'Carla', 'setor' => 'TI'],
]);
$agrupados = $usuarios->groupBy('setor');
print_r($agrupados->toArray());
Saída:
[
'RH' => [['nome' => 'Ana', 'setor' => 'RH']],
'TI' => [
['nome' => 'Bruno', 'setor' => 'TI'],
['nome' => 'Carla', 'setor' => 'TI'],
]
]
| Característica | Funções de array (nativas do PHP) | Collections do Laravel |
|---|---|---|
| Sintaxe | Procedural | Orientada a objetos |
| Encadeamento | Limitado (precisa aninhar funções) | Fluido com métodos em cadeia |
| Retorno | Sempre array | Objeto Collection |
| Métodos | Limitado ao que o PHP oferece | Rico em recursos (centenas de métodos) |
| Leitura | Pode ficar verbosa em transformações complexas | Muito mais legível e expressiva |
| Extensibilidade | Difícil de estender | Pode criar macros e extender Collection |
| Disponibilidade | Nativo em qualquer PHP | Disponível apenas com Laravel ou ao instalar o pacote separadamente |
Usando array functions:
$resultado = array_filter(
array_map(
fn($n) => $n * 2,
[1, 2, 3, 4, 5]
),
fn($n) => $n > 5
);
print_r($resultado); // [3 => 6, 4 => 8, 5 => 10]
Usando Collection:
$resultado = collect([1, 2, 3, 4, 5])
->map(fn($n) => $n * 2)
->filter(fn($n) => $n > 5)
->values(); // Remove as chaves
print_r($resultado->all()); // [6, 8, 10]
As Collections são ainda mais poderosas quando utilizadas em conjunto com o Eloquent ORM. Por exemplo:
$usuarios = User::all();
$ativos = $usuarios->filter(fn($user) => $user->ativo);
Se necessário, você pode converter uma Collection novamente para array com o método all() ou toArray():
$array = $colecao->toArray();
Dica: Use when() para condições elegantes
$dados = collect([1, 2, 3, 4, 5])
->when(true, fn($c) => $c->filter(fn($n) => $n > 2));
As Collections no Laravel são uma forma elegante, expressiva e poderosa de trabalhar com arrays e dados em geral. Comparadas às funções nativas do PHP, elas oferecem uma experiência mais fluida, legível e produtiva para o desenvolvedor moderno. Se você ainda não usa, experimente — seu código vai agradecer.
Vamos lá! Em um dia qualquer estava eu a rolar o feed do Linked-In e um determinado post me chamou... Leia mais
Resolvi retormar meus estudo em Go Lang e assim vamos ao primeiro post dessa série de estudos onde vamos aprender... Leia mais
Quando você trabalha com Laravel, uma das ferramentas mais poderosas sob o capô é o Service Container. Mas o que... Leia mais
Se você já se deparou com a frustrante mensagem de erro “ssh: connect to host bitbucket.org port 22: Network is... Leia mais