1 | <?php |
||
11 | class CachingIterator extends IteratorIterator |
||
12 | { |
||
13 | const NO_REWIND = 'NO_REWIND'; |
||
14 | const CACHE_ISSUED_REWIND = 'CACHE_ISSUED_REWIND'; |
||
15 | const OUTER_ISSUED_REWIND = 'OUTER_ISSUED_REWIND'; |
||
16 | |||
17 | protected $cache = array(); |
||
18 | protected $rewindStatus = self::NO_REWIND; |
||
19 | |||
20 | public function __construct($innerIterator) |
||
24 | |||
25 | protected function uncachedKey() |
||
29 | |||
30 | protected function uncachedCurrent() |
||
34 | |||
35 | protected function uncachedValid() |
||
39 | |||
40 | protected function uncachedRewind() |
||
44 | |||
45 | protected function uncachedNext() |
||
49 | |||
50 | public function cacheUpTo($count) |
||
61 | |||
62 | public function rewind() |
||
72 | |||
73 | public function key() |
||
78 | |||
79 | public function current() |
||
84 | |||
85 | public function next() |
||
89 | |||
90 | public function hasNext($offset = 1) |
||
95 | |||
96 | public function valid() |
||
101 | } |
||
102 | |||
103 |