IteratorAggregate , rien ne s'affiche.

Répondre


Cette question est un moyen d’empêcher des soumissions automatisées de formulaires par des robots.
Smileys
:D :) :( :o :shock: :? 8-) :lol: :x :P :oops: :cry: :evil: :twisted: :roll: :wink: :!: :?: :idea: :arrow: :| :mrgreen: =D> #-o =P~ :^o :non: :priere: 8-|
Voir plus de smileys
  Revue du sujet
 

  Étendre la vue Revue du sujet : IteratorAggregate , rien ne s'affiche.

par Shadockou » 11 sept. 2007, 17:18

8-| eeeh..hurmf ah oui oups..
Désolé, vraiment de l'étourderie ca.

par titerm » 11 sept. 2007, 14:06

Si tu met un return dans current() ca ira mieux...

par Ryle » 11 sept. 2007, 12:36

Oups, au temps pour moi, ca m'apprendra à tout lire :)

par Invité » 11 sept. 2007, 12:28

euh oui , c'est vrai ca ... Ah quoi bon un iterateur alors ?

Sinon eh bien ca ne m'affiche rien , à part "couleurs : " , aucun message d'erreur , mais c'est comme ci il n'y avait rien .

par Calimero » 11 sept. 2007, 12:19

Euh... au moment du foreach(), ta variable $couleurs n'est pas un tableau mais une instance d'un objet de type groupeCouleurs. Si tu veux accéder au tableau $couleurs de cet objet, il te faut le spécifier explicitement : $couleurs->couleurs
Dans ce cas-là, à quoi sert l'itérateur ? :roll:

par Ryle » 11 sept. 2007, 11:57

Euh... au moment du foreach(), ta variable $couleurs n'est pas un tableau mais une instance d'un objet de type groupeCouleurs. Si tu veux accéder au tableau $couleurs de cet objet, il te faut le spécifier explicitement : $couleurs->couleurs

par santaclos » 11 sept. 2007, 11:47

et il t'affiche quoi?

IteratorAggregate , rien ne s'affiche.

par Shadockou » 10 sept. 2007, 21:12

Bonjour j'ai un problème avec le code suivant , issue du chapitre sur la POO de PHP5 avancé :
<?php
class groupeCouleurs implements IteratorAggregate{
	public $couleurs = array();
	function ajouteCouleur($couleur){
		$this->couleurs[]=$couleur;
	}
	function getIterator(){
		$iterator = new GroupeCouleursIterator($this->couleurs);
		return $iterator;
	}
}
class GroupeCouleursIterator implements Iterator{
	private $array = array();
	private $key;
	private $current;
	function __construct($array){
		$this->array = $array;
	}
	function rewind (){
		reset($this->array);
		$this->next();
	}
	function valid(){
		return $this->key !==NULL;
	}
	function key(){
		return $this->key;
	}
	function current(){
		$this->current;
	}
	function next(){
		list($key,$current) = each($this->array);
		$this->key = $key;
		$this->current = $current;
	}
}


$couleurs = new groupeCouleurs();
$couleurs->ajouteCouleur('bleu');
$couleurs->ajouteCouleur('vert');
$couleurs->ajouteCouleur('rouge');
$couleurs->ajouteCouleur('jaune');
echo "Couleurs : ";
foreach ($couleurs as  $couleur){
	echo "$couleur";
}

?>
Qui devrait normalement afficher bleu vert rouge jaune , et j'avoue que je n'arrive vraiment pas à cerner où est l'erreur..... :s
Ou est elle ?

PS(edit) : je ne suis pas certain qu'il y ait un rapport, mais peut-être ...
Trouvé dans la doc php :
Please remember that actually the only PHP iterating structure that uses Iterator is foreach().

Any each() or list() applied to an Object implementing iterator will not provide the expected result
Mais il n'est cependant pas dit que l'on ne puisse pas les utiliser dans la classe...hrummm... :-k