Oui et dans ce cas nous arrivons à ce que j'avais dit dès le début :D:D
(Sauf que je m'étais planté sur interface et classe, mais maintenant je sais ;))
Et nous arrivons à un code du genre:
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39
|
class Participants implements Iterator
{
protected $_players;
// Code s.n.a.f.u
public function __construct() {
$this->_players = array();
}
public function ajouterJoueur(Joueur $player) {
$this->_players[$player->getId()] = $player;
}
public function jouer() {
foreach($this->_players as $player)
$player->jouer();
return $this;
}
public function getJouerById($id) {
return $this->_players[$id];
}
// + méthodes sur les tableaux
// Les diverses fonctions sur la collection (les même que les tableaux en fait)
public function reset() { return reset($this->_players); }
public function next() { return next($this->_players); }
public function prev() { return prev($this->_players); }
public function current() { return current($this->_players); }
public function end() { return end($this->_players); }
public function each() { return each($this->_players); }
// Les diverses fonctions pour obtenir une itération possible de cette collection
// surtout utilisées pour les listes déroulantes de nos IHM avec un foreach
public function key() { return key($this->->_players); }
public function rewind() { $this->reset(); }
public function valid() { return ( false !== $this->current() ); }
} |
Voilà, c ce que j'ai codé aujourd'hui pour une autre affaire (mais dans le même style)