[PHP5.1] STRING ITERATOR

Messages postés
10918
Date d'inscription
lundi 24 février 2003
Statut
Modérateur
Dernière intervention
2 mars 2010
- - Dernière réponse : neigedhiver
Messages postés
2492
Date d'inscription
jeudi 30 novembre 2006
Statut
Membre
Dernière intervention
14 janvier 2011
- 9 nov. 2007 à 14:38
Cette discussion concerne un article du site. Pour la consulter dans son contexte d'origine, cliquez sur le lien ci-dessous.

https://codes-sources.commentcamarche.net/source/44623-php5-1-string-iterator

Afficher la suite 
neigedhiver
Messages postés
2492
Date d'inscription
jeudi 30 novembre 2006
Statut
Membre
Dernière intervention
14 janvier 2011
11 -
Cela dit, la question du back() est intéressante...
Le foreach permet de parcourir un objet, du début à la fin. Point. Ca ne sert à rien d'autre, je crois qu'on est tous d'accord sur ça. Si on veut quelque chose de plus complet, on peut toujours le faire. En fait, back() c'est jamais qu'un seek(key() -1).
Si a priori ça n'a pas de raison d'être dans une boucle foreach, il est des cas où, parfois, on peut avoir besoin de revenir en arrière, pour un cas spécifique. Donc même au milieu d'un foreach, rien n'empêche de revenir 1 ou 2 enregistrements en arrière, éventuellement parce que celui-ci a été modifié par le traitement de l'enregistrement situé 1 ou 2 places plus loin.
Bref... Voilà voilà ^^
neigedhiver
Messages postés
2492
Date d'inscription
jeudi 30 novembre 2006
Statut
Membre
Dernière intervention
14 janvier 2011
11 -
Peut-être, mais moi, je posais pas la question dans le contexte ici présent, je voulais juste savoir de quoi il s'agissait, d'une manière générale ;)
Je viens de comprendre avec ta réponse ^^
popGG
Messages postés
23
Date d'inscription
mardi 31 mai 2005
Statut
Membre
Dernière intervention
9 novembre 2007
-
back() (contraire du next()), remove ou autres... ne servent à rien ici donc laisses tomber ce que je viens de dire. Je voulais juste pinailler...

@+
neigedhiver
Messages postés
2492
Date d'inscription
jeudi 30 novembre 2006
Statut
Membre
Dernière intervention
14 janvier 2011
11 -
popGG : "En parlant du remove, je suis d'accord avec toi mais je suis toujours pas convaincu de l'exemple donné ici puisque je ne vois aucun appel aux fonctions de cette classe"
=> C'est parce qu'elles n'ont pas à être utilisées directement par l'utilisateur (le développeur). Ces méthodes sont appelées automatiquement par la boucle foreach.
Lors d'une utilisation avec while, il faut les utiliser manuellement.
C'est là toute la puissance de l'itérateur associé à foreach : apporter à un objet des méthodes que l'on n'a pas à gérer ensuite. On se contente de les définir, ce qui permet de contrôler ce qu'elles font, et elles sont appelées automatiquement.
C'est pourquoi j'utilisais foreach pour itérer, et non while.

"Imaginez que l'on souhaite implémenter une fonction qui réalise un back. On risque d'être emmerdé avec le foreach...."
=> C'est quoi un back ? Pour moi, c'est le dos, mais c'est surement pas ce dont tu parles ici ^^
popGG
Messages postés
23
Date d'inscription
mardi 31 mai 2005
Statut
Membre
Dernière intervention
9 novembre 2007
-
2-neigedhiver: "je préfère utiliser un filtre : FilterIterator"
En fait, si tu souhaite réellement rajouter une autre classe, je te conseille directement de prendre l'iterator objet. Ainsi j'aurais surement pas écris autant ;b

@malalam: "vous êtes encore hors sujet, selon moi"
Je suis d'acc avec toi. Je suis pas là pour débattre sur le remove:

neigedhiver-2-popGG: "Quelle serait l'utilité de la méthode remove() ?
Supprimer le prochain enregistrement ? Mais avant, ou après l'avoir lu ?
Et pourquoi faire ça ? "

J'ai juste expliqué le sens d'un remove puisqu'on me l'a demandé. Mais je veux plus me répéter donc je le dis une dernière fois: Il sert à rien ici!!!!!!!!!
Je ne cherche pas à pinailler puisque je m'en fous du remove LOL... Mon exemple n'a pas été fait pour faire un concours avec l'exemple de neigedhiver. Je pensais que, de cette classe, on pouvait en sortir un but pédagogique pour ceux qui commencait avec les itérateurs.

@malalam: "vous ratez l'essentiel"
En parlant du remove, je suis d'accord avec toi mais je suis toujours pas convaincu de l'exemple donné ici puisque je ne vois aucun appel aux fonctions de cette classe donc c'est comme réaliser un exemple qui n'a rien avoir avec la classe. Imaginez que l'on souhaite implémenter une fonction qui réalise un back. On risque d'être emmerdé avec le foreach.... Mais bon, je veux plus me répéter donc je n'insiste plus... En tout cas, c'était simpa. Je pense qu'on se reverra sur d'autres post ;b

Hasta pronto chiquillos