通过扩展 ArrayObject 让一个对象循环为带有 foreach() 的数组


Let an object loop as array with a foreach() by extending ArrayObject

所以我有一个对象,其中包含私有数据成员中的一组对象。我现在可以通过覆盖ArrayObjectoffsetGet($index)count()函数来用for循环循环它,但我也想在foreach循环中循环它。

我需要最少扩展哪些功能才能添加此功能?

使用 SPL 迭代器接口 有关详细信息,请参阅 http://uk.php.net/manual/en/class.iterator.php

AFAIK 您可以在ArrayObject上直接使用foreach

$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