
Testando o envio de mensagens de email usando Laravel
Enviar mensagens de email é uma parte essencial de muitas aplicações web, e o Laravel, um popular framework PHP, torna... 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.
Enviar mensagens de email é uma parte essencial de muitas aplicações web, e o Laravel, um popular framework PHP, torna... Leia mais
Neste post, você aprenderá a fazer o deploy de uma aplicação Laravel em uma VPS rodando Ubuntu com o servidor... Leia mais
À medida que um sistema cresce, a lógica de negócio costuma se tornar mais complexa. Um dia você está apenas... Leia mais
Quando lidamos com arquivos de texto, a codificação de caracteres é um aspecto fundamental para garantir que os textos sejam... Leia mais