Iterator to behawioralny wzorzec projektowy pozwalający sekwencyjnie przechodzić od elementu do elementu jakiegoś zbioru bez konieczności eksponowania jego formy.
Dzięki Iteratorowi klienci mogą przeglądać kolejne elementy różnych kolekcji w podobny sposób, za pośrednictwem jednego interfejsu.
Przypadki użycia: Wzorzec Iterator jest bardzo rozpowszechniony w kodzie PHP. Wiele frameworków i bibliotek pozwala za jego pomocą poruszać się po elementach ich kolekcji.
PHP posiada wbudowany interfejs Iterator na podstawie którego można budować własne iteratory kompatybilne z resztą kodu PHP.
Identyfikacja: Iterator łatwo rozpoznać po obecności metod nawigacyjnych (takich jak następny, poprzedni i innych). Kod klienta stosujący iteratory może nie mieć bezpośredniego dostępu do badanej kolekcji.
Przykład koncepcyjny
Poniższy przykład ilustruje strukturę wzorca Iterator ze szczególnym naciskiem na następujące kwestie:
Z jakich składa się klas?
Jakie role pełnią te klasy?
W jaki sposób elementy wzorca są ze sobą powiązane?
Poznawszy strukturę wzorca będzie ci łatwiej zrozumieć następujący przykład, oparty na prawdziwym przypadku użycia PHP.
index.php: Przykład koncepcyjny
Output.txt: Wynik działania
Przykład z prawdziwego życia
Ponieważ PHP posiada wbudowany interfejs Iterator, pozwalający na wygodną integrację z pętlami foreach, łatwo stworzyć własne iteratory mogące przechodzić sekwencyjnie po elementach niemal każdej struktury danych, jaką można sobie wyobrazić.
Poniższy przykład użycia wzorca Iterator daje łatwy dostęp do plików CSV.