O que é e como usar o Operador Spread no PHP ( versão 7.4 ou superior)
- Detalhes
- Angelo Luis Ferreira
- PHP
- Acessos: 10485
Neste tutorial vamos apresentar um novo recurso do PHP para expandir arrays de forma muito eficiente. Trata-se do Spread Operator, Operador Spread ou Array Spread, como queira. Este recurso só está disponível no PHP 7.4 ou superior.
Definições:
Operador Spread: recurso para converter um array em argumentos. Serve como um atalho para unir 2 ou mais arrays. É muito útil também quando se precisar quebrar um array para passar seus valores para uma função ou construtor de um objeto como argumentos de valores separados.
Vantagens em relação à função array_merge(): O operador Spread possui melhor desempenho, pois além de ser uma estrutura de linguagem e não uma função, otimiza o tempo de compilação para arrays constantes. Outra vantagem é que o operador Spread suporta objetos também, enquanto que a função array_merge suporta apenas arrays.
Array, em programação, é uma estrutura de dados que armazena uma coleção de elementos de tal forma que cada um dos elementos possa ser identificado por, pelo menos, um índice ou uma chave. Leia Como declarar, atribuir e acessar elementos de um Array em PHP.
1. Usando o operador Spread
1.1. O operador Spread é definido pela variável do array que se deseja expandir precedido por 3 pontos (...). Veja o exemplo abaixo:
$arrayA = [1,2,3];
$arrayB = [7,8,9];
$arrayC = [...$arrayA, 4 ,5, 6, ...$arrayB];
echo '<pre>';
print_r($arrayC);
Observações:
1.1.1. O array $arrayC adicionou o $arrayA e o $arrayB aos elementos 4, 5, 6.
1.1.1.1. Foi utilizado o operador spread ...$arrayA
1.1.1.2. Foi utilizado o operador spread ...$arrayB
1.1.2. A função print_r() visualiza as chaves e valores de um array.
Veja o resultado do nosso exemplo
1.2. Veja a seguir mais um exemplo utilizando o operador spread:
<?php
$boloBase = [
'farinha',
'ovos',
'açucar',
'leite',
'fermento'
];
$chocolate = [
'chocolate',
'creme'
];
$boloChocolate = [
...$boloBase,
...$chocolate,
'granulado'
];
echo '<pre>';
echo "Bolo Base".'<br/>';
print_r($boloBase);
echo "<br/>Creme de Chocolate<br/>";
print_r($chocolate);
echo "<br/>Bolo de Chocolate<br/>";
print_r($boloChocolate);
Veja o resultado do nosso exemplo:
2. Expandir array retornado de uma função
2.1. Outra vantagem do operador Spread é que podemos retornar um array de uma função para um novo array. Veja o exemplo abaixo:
<?php
function frutas() {
return ['manga', 'mamão', 'pera', 'maçã'];
}
$alimentos = [...frutas(), 'batata', 'arroz', 'feijão'];
echo "Alimentos";
echo '<pre>';
print_r($alimentos);
Veja o resultado do nosso exemplo:
3 - Function Generator
3.1. Outro benefício do PHP 7.4 é usar a function generator. Uma function generator funciona exatamente como uma função normal, exceto que, em vez de retornar um valor, retorna tantos valores quanto necessário. Veja o exemplo abaixo onde expandimos os valores retornados de uma function generator para um novo array utilizando o operador spread:
function numbers() {
for ($i = 3; $i <= 5; $i++) {
yield $i;
}
}
$complete = [0, 1, 2, ...numbers()];
echo "Complete Numbers";
echo '<pre>';
print_r($complete);
Observação
3.1.1. O coração de uma função geradora (function generator) é a palavra-chave yield. A palavra-chave yield parece com return, exceto que , em vez de retornar um valor, retorna vários valores quanto necessário.
Documentação Oficial
1. [Documentação PHP - function generator] » Sobre a função geradora.
2. [Documentação PHP - PHP 7.4. features] » Novos recursos do PHP 7.4.