|
Итераторы объектовPHP 5 предоставляет такой способ объявления объектов, который дает возможность пройти по списку элементов данного объекта, например, с помощью оператора foreach. По умолчанию, в этом обходе (итерации) будут участвовать все видимые свойства объекта. Пример #1 Итерация простого объекта
<?php Результат выполнения данного примера: var1 => value 1 var2 => value 2 var3 => value 3 MyClass::iterateVisible: var1 => value 1 var2 => value 2 var3 => value 3 protected => protected var private => private var Как показывает результат, foreach проитерировал все принадлежащие объекту видимые свойства. Кроме того, вы можете развить эту концепцию и реализовать один из встроенных в PHP 5 интерфейсов - Iterator. Это позволит самому объекту решать, что и как должно быть итерировано. Пример #2 Объект Iteration, реализующий интерфейс Iterator
<?php Результат выполнения данного примера: перемотка в начало верный: 1 текущий: 1 ключ: 0 0: 1 следующий: 2 верный: 1 текущий: 2 ключ: 1 1: 2 следующий: 3 верный: 1 текущий: 3 ключ: 2 2: 3 следующий: верный: Можно также объявить класс без необходимости описывать все методы, перечисленные в интерфейсе Iterator, для этого нужно просто реализовать PHP 5 интерфейс IteratorAggregate. Пример #3 Объект Iteration, реализующий интерфейс IteratorAggregate
<?php Результат выполнения данного примера: перемотка в начало текущий: value 1 верный: 1 текущий: value 1 ключ: 0 ключ/значение: [0 -> value 1] следующий: value 2 текущий: value 2 верный: 1 текущий: value 2 ключ: 1 ключ/значение: [1 -> value 2] следующий: value 3 текущий: value 3 верный: 1 текущий: value 3 ключ: 2 ключ/значение: [2 -> value 3] следующий: текущий: верный:
|
|