Maison >développement back-end >tutoriel php >Qu'est-ce qu'un générateur php ? 10 minutes pour vous aider à comprendre le générateur PHP avec des exemples
Avant d'expliquer les générateurs, introduisons les itérateurs :
En PHP, foreach est généralement utilisé pour parcourir des tableaux.
Et si on veut rendre un objet traversable ?
PHP nous fournit l'interface Iterator Tant que cette interface est implémentée, cet objet peut être itéré via foreach.
L'exemple est le suivant :
Lorsque nous parcourons $it via foreach, PHP s'appellera dans l'ordre :
rewind( ) à réinitialiser à Le premier élément
valid() vérifie si la position actuelle est valide
current() renvoie l'élément actuel
key() renvoie la clé du L'élément actuel
next() pointe vers l'élément suivant. Le générateur
est une nouvelle fonctionnalité introduite dans PHP 5.5, mais peu de gens semblent l'utiliser actuellement.
Qu'est-ce qu'un générateur php ?
Ce qui suit est l'explication du générateur tirée de la documentation officielle PHP :
Le générateur fournit un moyen plus simple d'implémenter une itération d'objet simple, par rapport à la définition d'une classe pour implémenter l'interface Iterator. approche, les frais généraux de performance et la complexité sont considérablement réduits.
Les générateurs vous permettent d'écrire du code dans un bloc foreach pour parcourir un ensemble de données sans créer de tableau en mémoire, ce qui atteindrait votre limite de mémoire ou prendrait un temps de traitement considérable. Au lieu de cela, vous pouvez écrire une fonction génératrice, tout comme une fonction personnalisée normale, et au lieu qu'une fonction normale ne renvoie qu'une seule fois, le générateur peut produire autant de fois que nécessaire pour générer les valeurs qui doivent être itérées.
Afin de refléter les avantages du générateur, nous définissons ci-dessous une fonction de comparaison :
Parce que créer un si grand tableau en mémoire pour l'itération, alors PHP indique directement que la limite de mémoire d'un seul processus a été dépassée.
Changeons-le en générateur :
Vous pouvez voir que nous appelons func1() et renvoyons un objet Generator, qui peut être utilisé pour chaque itération, à chaque itération, PHP demandera à l'instance Generator de calculer et de fournir la prochaine valeur à itérer. L'élégance des générateurs est que chaque fois qu'une valeur est produite, l'état interne du générateur est mis en pause ; lorsque la valeur suivante est demandée au générateur, l'état interne est restauré. L'état interne du générateur continuera de basculer entre pause et reprise jusqu'à ce que la fin du corps de définition de la fonction soit atteinte ou qu'une instruction return vide soit rencontrée.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!