PHP introduit les générateurs
Par un mécanisme similaire à celui de Python avec le mot-clé yield
PHP introduit les générateurs
Par un mécanisme similaire à celui de Python avec le mot-clé yield
|
Les rubriques (actu, forums, tutos) de Développez
Réseaux sociaux
Sur le même sujet
|
Le 04/09/2012, par tarikbenmerar, Chroniqueur Actualités
Les générateurs sont un moyen simple et puissant de créer des itérateurs dans des langages tels que Python. Maintenant, c'est PHP qui fait le pas et s'approprie ce concept. Pour comprendre l'utilité et la puissance de ce dernier, on revoit l'exemple typique de lecture d'un fichier en entier : Code :
On peut certainement éviter ce comportement et récupérer les données ligne par ligne, en utilisant les itérateurs qui sont parfaits pour ce cas d'utilisation. Malheureusement, en PHP il n'existait jusque-là aucune manière simple d'implémenter les itérateurs. Pour y arriver, on est amené à créer une classe complexe implémentant une interface Iterator comme suit : Code :
Code :
En effet, l'instruction $lines = getLinesFromFile($fileName) ne renvoie aucune donnée, c'est simplement un générateur qui implémente l'itérateur qui vient d'être créé. Après, pendant l'exécution de la boucle foreach ($lines as $line), chaque itération génère les données renvoyées par yield, qui seront stockées dans $line. En fait, cette génération implémente un objet Iterator et des appels à Iterator::next() seront effectués. L'exécution s'arrête jusqu'à la rencontre du prochain yield, qui renvoie la prochaine donnée, et ainsi de suite... Quelques jours après l'introduction du mot clé Finally, se succèdent donc pour PHP les bonnes nouvelles. Ou les emprunts d’autres langages, diront certains. Source : détails du mot clé yield dans le site de PHP Et vous ? Quelle impression vous laisse cette annonce ? Pouvez-vous trouver d'autres cas d'utilisation intéressants ? Quelle autre approche de simplification des itérateurs auriez-vous préférée pour PHP ? |



Les générateurs sont un moyen simple et puissant de créer des itérateurs dans des langages tels que Python. Maintenant, c'est PHP qui fait le pas et s'approprie ce concept.
Quelle impression vous laisse cette annonce ?
