Iterace (volně přeloženo jako opakování, cyklus opakování) umožňuje přístup k objektům jakoby k polím.

Marcus Boerger vytvořil knihovnu SPL (Standard PHP Library), která obsahuje definice rozhraní, jež můžete implementovat do svých tříd a k nim následně přistupovat jako k polím.

Nejprve si ukážeme implementaci rozhraní Iterator. Obsahuje metody current() (vrací aktuální prvek pole), key() (vrací klíč prvku), next(), (posune interní ukazatel pole na další prvek), rewind() (posune interní ukazatel pole na první prvek) a valid() (kontroluje, zda pole obsahuje další prvky). Podívejte na následující příklad:

vlastnosti = $pole;
}
}
public function rewind(){
echo ‚Na začátek pole
‚;
reset($this->vlastnosti);
}
public function current(){
$promenna = current($this->vlastnosti);
echo „Vracím hodnotu: $promenna
„;
return $promenna;
}
public function key(){
$promenna = key($this->vlastnosti);
echo „Vracím klíč $promenna
„;
return $promenna;
}
public function next(){
$promenna = next($this->vlastnosti);
echo „Příští prvek pole: $promenna
„;
return $promenna;
}
public function valid(){
$promenna = $this->current() !== false;
echo „validita: $promenna
„;
return $promenna;
}
}

$pole = array(1,2,3);
$ins = new implementovanyIterator($pole);

foreach ($ins as $klic => $hodnota){
echo „$klic: $hodnota“;
}
?>
Tento příklad vypíše:

Na začátek pole
Vracím hodnotu: 1
validita: 1
Vracím hodnotu: 1
Vracím klíč 0
0: 1
Příští prvek pole: 2
Vracím hodnotu: 2
validita: 1
Vracím hodnotu: 2
Vracím klíč 1
1: 2
Příští prvek pole: 3
Vracím hodnotu: 3
validita: 1
Vracím hodnotu: 3
Vracím klíč 2
2: 3
Příští prvek pole:
Vracím hodnotu:
validita:
Protože vytváříme instanci, nejprve je volána metoda rewind(), následuje kontrola validity, která volá metodu current(), a po opětovném volání metody current() vracíme klíč pole. Příště již není volána metoda rewind(), ale next().

Vypsat všechny vlastnosti objektu je možné pomocí následujícího zápisu:

„;
foreach ($this as $vlastnost => $hodnota){
echo „$vlastnost : $hodnota
„;
}
}
}

$ins = new vypis();
$ins->VypisVlastnosti();

foreach ($ins as $vlastnost => $hodnota){
echo „$vlastnost : $hodnota
„;
}
?>
Tento skript vypíše:

Metoda VypisVlastnosti() byla volána
vlastnost1 : vlastnost 1
vlastnost2 : vlastnost 2
vlastnost3 : vlastnost 3
vlastnost4 : vlastnost 4
vlastnost5 : vlastnost 5
vlastnost1 : vlastnost 1
vlastnost2 : vlastnost 2
vlastnost3 : vlastnost 3
Všech pět vlastností bude vypsáno, protože uvnitř třídy jsou všechny vlastnosti veřejné, další tři vlastnosti jsou přístupné i mimo třídu.

Pozn. red.: Zdůrazňujeme, že tento text se týká PHP 5.

3 Příspěvků v diskuzi

  1. To jsou članky tohle to. Složitý jak ehm. Nechápu. Vždycky to ukazujete na tak hloupych prikladech. Katastrofa.

    • Pěkný den, děkujeme za podnětné zpětné vazby. Vaše reakce na tento 9 let starý článek předáme autorovi.

Odpovědět