2 SPL: CachingIterator and offsetSet/Unset, getCache using flag FULL_CACHE
14 class MyCachingIterator extends CachingIterator
16 function __construct(Iterator $it, $flags = 0)
18 parent::__construct($it, $flags);
23 echo __METHOD__ . "()\n";
24 foreach($ar as $k => $v)
27 $this->offsetSet($k, $v);
31 function testUnset($ar)
33 echo __METHOD__ . "()\n";
34 foreach($ar as $k => $v)
37 $this->offsetUnset($v);
43 echo __METHOD__ . "()\n";
44 foreach($this as $v) ;
49 echo __METHOD__ . "()\n";
50 var_dump($this->getCache());
54 $it = new MyCachingIterator(new ArrayIterator(array(0, 'foo'=>1, 2, 'bar'=>3, 4)));
58 var_dump($it->offsetSet(0, 0));
62 echo "Exception: " . $e->getMessage() . "\n";
67 var_dump($it->offsetUnset(0));
71 echo "Exception: " . $e->getMessage() . "\n";
74 $it = new MyCachingIterator(new ArrayIterator(array(0, 1, 2, 3)), CachingIterator::FULL_CACHE);
76 $checks = array(0 => 25, 1 => 42, 3 => 'FooBar');
77 $unsets = array(0, 2);
79 $it->testSet($checks);
81 $it->testUnset($unsets);
85 $it->testSet($checks);
87 $it->testUnset($unsets);
92 Exception: MyCachingIterator does not use a full cache (see CachingIterator::__construct)
93 Exception: MyCachingIterator does not use a full cache (see CachingIterator::__construct)
94 MyCachingIterator::testSet()
98 MyCachingIterator::show()
107 MyCachingIterator::testUnset()
110 MyCachingIterator::show()
117 MyCachingIterator::fill()
118 MyCachingIterator::show()
129 MyCachingIterator::testSet()
133 MyCachingIterator::show()
144 MyCachingIterator::testUnset()
147 MyCachingIterator::show()