Where would you look for documentation about interface RecursiveIterator? RecursiveIteratorAggregate - suggestion
| From: | Marc Weber | Date: | Tue, 13 Feb 2007 10:54:41 +0000 |
| Subject: | Where would you look for documentation about interface RecursiveIterator? RecursiveIteratorAggregate - suggestion | ||
| Groups: | php.general | ||
| Request: | Send a blank email to php-general+get-248799@lists.php.net to get a copy of this message | ||
http://de.php.net/~helly/php/ext/spl/interfaceRecursiveIterator.html
This piece of code
------------------------
<?php
$array = array(1, 2 => array(21, 22 => array(221, 222), 23 => array(231)), 3);
$dir = new RecursiveIteratorIterator(new ArrayIterator($array));
foreach ($dir as $file) {
print "$file\n";} ?> ------------------------ results in ------------------------ Fatal error: Uncaught exception 'InvalidArgumentException' with message 'An instance of *RecursiveIterator* or IteratorAggregate creating it is required' in /tmp/t3.php:4 Stack trace: /tmp/t3.php|4| RecursiveIteratorIterator->__construct(Object(ArrayIterator)) #1 {main} thrown in /tmp/t3.php on line 4 ------------------------ So this interface exists. Why am I asking? I've written a small html combinator library where each tag is represented as object. Now I want to iterate over them using RecursiveIteratorIterator. To be able to iterate over subElements I have to provide subIterator by exposing the interface RecursiveIterator, right? I'd like to also implement IteratorAggregate instead of Iterator because subtags are stored in arrays. This doesn't work because RecursiveIterator does inherit from Iterator. Thus I have to implement current, next, etc as well just beeing dummy functions calling an internal iterator iterating over those elements? Or is this much easier and there is a RecursiveIteratorAggregate interface? Marc