Desde sua versão 5.5 encontra-se disponível o recurso de generators no PHP<, esse recurso nos permite realizar iterações tendo ganho de performance, pois realiza a entrega dos dados sobe demanda, diferentemente do iterador padrão do PHP, onde processa o conjunto de dados na memória.
Para criar um generator é muito simples, pois são somente funções PHP que fazem uso da palavra chave yield
. Diferente do retorno convencional de uma função PHP, ao utilizar um generator ele apenas gera valores por demanda, como podemos analisar no exemplo abaixo.
|
|
Após criarmos nosso generator, é realizado um foreach para percorrer os dados e imprimir os valores.
Como resultados obtivemos:
|
|
O exemplo acima é uma amostra básica do uso de generator, porem imagine o caso de uso que você tenha que processar um arquivo TXT de 5GB, com disponibilidade de apenas 1GB de memória disponível para o PHP.
|
|
Neste exemplo o PHP vai alocar memória apenas para cada linha processada, porem o processo realizado por um generator são sempre para frente, onde não podemos retroceder, avançar ou realizar buscas.
A SPL (Standard PHP Library) dispõem de diversos iterators padrões, vale a pena dar uma olhada na documentação.
Bom pessoal espero que tenham gostado, e que este recurso seja útil em seu dia a dia.
Até a próxima! 🙂