Parcours d'objets

PHP cours tutorial

Parcourons nos objets

PHP fournit une façon de définir les objets de manière à ce qu'on puisse parcourir une liste de membres avec une structure foreach.
Par défaut, toutes les propriétés visibles seront utilisées pour le parcours.

Exemple :

Sélectionner le code

  <?php
  class MyClass 
  {
    public $var1 = 'valeur 1';
    public $var2 = 'valeur 2';
    public $var3 = 'valeur 3';
    protected $protected = 'variable protégée';
    private   $private   = 'variable privée';
    function iterateVisible() {
       echo "MyClass::iterateVisible:\n";
       foreach($this as $key => $value)
   {
           print "$key => $value\n";
       }
    }
  }
  $class = new MyClass();
  foreach($class as $key => $value)
  {
      print "$key => $value\n";
  }
  echo "\n";
  
  $class->iterateVisible();

 

Ce qui affiche

var1 => valeur 1
var2 => valeur 2
var3 => valeur 3

MyClass::iterateVisible:
var1 => valeur 1
var2 => valeur 2
var3 => valeur 3
protected => variable protégée
private => variable privée

Comme nous le montre l'affichage, l'itération foreach affiche toutes les variables visiblesdisponibles. Pour aller plus loin, vous pouvez implémenter l 'interface interne de PHP nommée Iterator . Ceci permet de déterminer comment l'objet doit être parcouru.

Exemple :

Sélectionner le code

  <?php
  class MyIterator implements Iterator
  {
      private $var = array();
      public function __construct($array)
      {
          if (is_array($array)) {
              $this->var = $array;
          }
      }
      public function rewind()
      {
          echo "rembobinage\n";
          reset($this->var);
      }
      public function current()
      {
          $var = current($this->var);
          echo "actuel : $var\n";
          return $var;
      }
      public function key()
      {
          $var = key($this->var);
          echo "clé : $var\n";
          return $var;
      }
      public function next()
      {
          $var = next($this->var);
          echo "suivant : $var\n";
          return $var;
      }
      public function valid()
      {
          $key = key($this->var);
          $var = ($key !== NULL && $key !== FALSE);
          echo "valide : $var\n";
          return $var;
      }
  }
  $values = array(1,2,3);
  $it = new MyIterator($values);
  foreach ($it as $a => $b) {
      print "$a: $b\n";
  }
  ?>

 

Ce qui affiche

rembobinage
valide : 1
actuel : 1
clé : 0
0: 1
suivant : 2
valide : 1
actuel : 2
clé : 1
1: 2
suivant : 3
valide : 1
actuel : 3
clé : 2
2: 3
suivant :
valide :

 Note:

Pour plus d'exemples sur le parcours d'objets, lisez la section sur l' extension Bibliothèque standard PHP.


Par carabde 20 Aout 2014