Позвольте объекту зацикливаться как массиву с помощью foreach(), расширяя ArrayObject
Итак, у меня есть объект, который содержит набор объектов в частном элементе данных. Теперь я могу зациклить его с помощью цикла for
, переопределив функцию count()
ArrayObject
и offsetGet($index)
, но я также хочу зациклить его в цикле foreach
.
Какие функции мне нужно минимально расширить, чтобы добавить эту функциональность?
2
2 answers
Используйте интерфейс итератора SPL, см. http://uk.php.net/manual/en/class.iterator.php подробнее
3
Author: Rufinus, 2012-06-15 12:14:02
AFAIK Вы можете использовать напрямую foreach
на ArrayObject
:
$ao = new ArrayObject(array(1, 2, 3, 4));
$res = 0;
foreach($ao as $el) {
$res += $el;
}
echo 'ArrayObject elements sum: '.$res;
ОБРАЗЕЦ: http://codepad.org/uQDGQ03A
2
Author: shadyyx, 2012-06-15 12:17:24