Das Beispiel top


Es soll möglich sein einen String, also eine Zeichenkette, und zusätzlich noch einen “Trenner” dem Klassenkonstruktor zu übergeben. Danach kann durch die Ergebnisse durch iteriert werden. Etwas Code:

<?php
$woerter = new Parser('Lorem ipsum dolor sit amet', ' ');
foreach($woerter as $v)
{
  echo $v, '<br />';
}
?>

soll das ausgegeben:

Lorem
ipsum
dolor
sit
amet

Und die eigentliche Klasse:

<?php
class Parser
  implements Iterator
{
  //Behälter für das Ergebnis
  protected $_results = array();
 
  //Positionszähler für das aktuelle Ergebnis
  protected $_pos = 0;
 
  //Konstruktor
  public function __construct($input, $delimiter = ' ')
  {
    $this->_results = explode($delimiter, trim($input));
  }
 
  //***Methoden des Iterator-Interfaces***
  //Gib den aktuellen Wert zurück
  public function current()
  {
    return $this->_results[$this->_pos];
  }
 
  //Gib den aktuellen Index zurück
  public function key()
  {
    return $this->_pos;
  }
 
  //Gehe zum nächsten Eintrag
  public function next()
  {
    ++$this->_pos;
  }
 
  //Setze Position zurück
  public function rewind()
  {
    $this->_pos = 0;
  }
 
  //Ist die aktuelle Position valide, also vorhanden?
  public function valid()
  {
    return isset($this->_results[$this->_pos]);
  }
}
?>

Der Code ist gut Kommentiert, sollten jedoch Fragen auftreten einfach fragen.

Einsatzgebiete top


Mögliche Einsatzgebiete sind zum Beispiel Datenbank-Klassen, die ihre Daten über das Iterator-Interface anbieten.