<?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..... :sOu est elle ?
PS(edit) : je ne suis pas certain qu'il y ait un rapport, mais peut-être ...
Trouvé dans la doc php :
Mais il n'est cependant pas dit que l'on ne puisse pas les utiliser dans la classe...hrummm...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