В настоящее время я пишу класс, реализующий интерфейс SeekableIterator, и столкнулся с проблемой. У меня есть два внутренних массива, которые я использую, и я хотел бы разрешить итерацию через оба из них извне класса. Есть ли простой способ сделать это без предварительного объединения двух массивов внутри класса? Вот краткий пример того, что я пытаюсь сделать:
class BookShelf implements ArrayAccess, Countable, SeekableIterator {
protected $_books = array(...);
protected $_magazines = array(...);
/**** CLASS CONTENT HERE ****/
}
$shelf = new BookShelf();
// Loops through both arrays, first books (if any) and then magazines (if any)
foreach($shelf as $item) {
echo $item;
}






Предполагая, что эти массивы оба численно проиндексированы, если текущий индекс меньше, чем
count($this->_books);
затем вернись
$this->_books[$index];
В противном случае, если индекс меньше, чем count (книги) + count (журналы), верните
$this->_magazines[$index-count($this->_books)]
В противном случае может возникнуть исключение OutOfBoundsException.
Все остальное должно просто встать на свои места.