OOP v PHP: Iterace (opakování)

15. února 2006

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.

Předchozí článek OOP v PHP: Přetěžování
Další článek OOP v PHP: Typová kontrola
Štítky: oop-php

Mohlo by vás také zajímat

Nejnovější

3 komentářů

  1. element

    Bře 13, 2015 v 16:46

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

    Odpovědět
  2. element

    Bře 13, 2015 v 16:47

    Uvedom si pro koho to pises. Ti co tomu rozumi to uz nepotrebujou. Tohle ma byt pro zacatecniky v OOP ne? Pis to srozumitelneji.

    Odpovědět
    • Marek Machač

      Bře 16, 2015 v 8:08

      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

Napsat komentář

Vaše e-mailová adresa nebude zveřejněna. Vyžadované informace jsou označeny *