interface arrayiterator de base dans php5?

interface arrayiterator de base dans php5? - PHP - Programmation

Marsh Posté le 11-11-2010 à 16:48:27    

salut .  
ptite question  
 
j'ai decouvert il y a peu les interfaces predefinies qui permettent de parcourir les objets.  
j'ai lu dans des tutos qu'il y a une interface qui permet , une fois implementée de parcourir un objet avec foreach sous la forme par exemple :
 
foreach ($object as $champ => $valeurchamp)
 
mais voila . j'ai decouvert les interfaces la semaine derniere mais je donne du foreach sur objet depuis plusieurs mois, si ce n'est pas année .
conclusion ; cette interface existe de base sur toutes les classes sans devoir l'implementer? sinon pourquoi un foreach sur obj fonctionne ?  
merci pour vos eclaircissements.

Reply

Marsh Posté le 11-11-2010 à 16:48:27   

Reply

Marsh Posté le 11-11-2010 à 17:53:01    

parcequ'en fait un objet est implémenté comme un tableau , mais ca ne permet que d'iterer sur tous les membres publics

 

Ca ne permet pas ce genre de truc :

Code :
  1. class BiduleCollection implements Iterator
  2. {
  3.     private $_collection =array();
  4.     private $status = false;
  5.     public $name;
  6.  
  7. // ici , tu redefinis tes méthode, je ne le fais pas parceque je suis faineant
  8.  public function rewind();
  9.    public function key();
  10.    public function current();
  11.    public function next();
  12.    public function valid();
  13.  
  14. }
  15. $bc = new BiduleCollection();
  16.  
  17. foreach($bc ad $bidule)
  18. {
  19.    $bidule->pouet();
  20. }
 


Message édité par flo850 le 11-11-2010 à 17:53:56
Reply

Marsh Posté le 11-11-2010 à 18:25:20    

a ok .  
la reponse comme j'aime : en 10 mots tout est dit .  
 
super grand merci.  

Reply

Marsh Posté le 13-11-2010 à 03:43:45    

ou utilise l'interface IteratorAggregate qui sera beaucoup plus simple

 
Code :
  1. class BiduleCollection implements IteratorAggregate
  2. {
  3.    private $status = false;
  4.    public $name;
  5.  
  6.    public function getIterator()
  7.    {
  8.        return new ArrayIterator($this);
  9.    }
  10. }
  11.  
  12. $bc = new BiduleCollection();
  13.    
  14. foreach($bc as $bidule)
  15. {
  16.    $bidule->pouet();
  17. }


Message édité par stealth35 le 13-11-2010 à 03:45:04
Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed