У меня есть объект, который реализует ArrayAccess , Итератор и Счетный . Это приводит к почти идеальному маскированию массива. Я могу получить к нему доступ со смещением ($object[foo]
), я могу выбросить его в foreach
-петл и многое другое.
Но что я не могу сделать, так это передать его собственным функциям итератора массива (next()
, reset()
, current()
, key()
), хотя я реализовал необходимые методы из Iterator. PHP, кажется, упорно пытается перебрать свои переменные-члены, а также полностью игнорирует итератор-методу.
Есть ли интерфейс, который бы привязывал объект к остальным функциям обхода массива, или я застрял с тем, что у меня есть?
Обновление: IteratorAggregate, похоже, тоже не является ответом. Хотя он используется в foreach
-loops, базовые функции итератора массива не вызывают методы.