Inheritance diagram for IteratorIterator:


Public Member Functions | |
| __call ($func, $params) | |
| __construct (Traversable $iterator, $classname=null) | |
| current () | |
| getInnerIterator () | |
| key () | |
| next () | |
| rewind () | |
| valid () | |
Private Attributes | |
| $iterator | |
It is also possible to derive the class and implement IteratorAggregate by downcasting the instances returned in getIterator. See the following example (assuming BaseClass implements Traversable):
class SomeClass extends BaseClass implements IteratorAggregate { function getIterator() { return new IteratorIterator($this, 'BaseClass'); } }
As you can see in the example this approach requires that the class to downcast to is actually a base class of the specified iterator to wrap. Omitting the downcast in the above example would result in an endless loop since IteratorIterator::__construct() would call SomeClass::getIterator().
Definition at line 40 of file iteratoriterator.inc.
| IteratorIterator::__construct | ( | Traversable $ | iterator, | |
| $ | classname = null | |||
| ) |
Construct an IteratorIterator from an Iterator or an IteratorAggregate.
| iterator | inner iterator | |
| classname | optional class the iterator has to be downcasted to |
Definition at line 47 of file iteratoriterator.inc.
References $iterator.
00048 { 00049 if ($iterator instanceof IteratorAggregate) 00050 { 00051 $iterator = $iterator->getIterator(); 00052 } 00053 if ($iterator instanceof Iterator) 00054 { 00055 $this->iterator = $iterator; 00056 } 00057 else 00058 { 00059 throw new Exception("Classes that only implement Traversable can be wrapped only after converting class IteratorIterator into c code"); 00060 } 00061 }
| IteratorIterator::__call | ( | $ | func, | |
| $ | params | |||
| ) |
Aggregate the inner iterator.
| func | Name of method to invoke | |
| params | Array of parameters to pass to method |
Definition at line 110 of file iteratoriterator.inc.
| IteratorIterator::current | ( | ) |
| IteratorIterator::getInnerIterator | ( | ) |
Implements OuterIterator.
Definition at line 65 of file iteratoriterator.inc.
Referenced by InfiniteIterator::next().
| IteratorIterator::key | ( | ) |
| IteratorIterator::next | ( | ) |
forward to next element
Implements Iterator.
Reimplemented in InfiniteIterator.
Definition at line 93 of file iteratoriterator.inc.
| IteratorIterator::rewind | ( | ) |
rewind to the first element
Implements Iterator.
Reimplemented in NoRewindIterator.
Definition at line 100 of file iteratoriterator.inc.
| IteratorIterator::valid | ( | ) |
Implements Iterator.
Definition at line 72 of file iteratoriterator.inc.
Referenced by InfiniteIterator::next().
IteratorIterator::$iterator [private] |
The inner iterator must be private because when this class will be converted to c code it won't no longer be available.
Definition at line 118 of file iteratoriterator.inc.
Referenced by __construct().
1.5.2