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! 🙂