summaryrefslogtreecommitdiff
path: root/ext/spl/tests/iterator_046.phpt
diff options
context:
space:
mode:
Diffstat (limited to 'ext/spl/tests/iterator_046.phpt')
-rw-r--r--ext/spl/tests/iterator_046.phpt51
1 files changed, 51 insertions, 0 deletions
diff --git a/ext/spl/tests/iterator_046.phpt b/ext/spl/tests/iterator_046.phpt
new file mode 100644
index 0000000..f57415a
--- /dev/null
+++ b/ext/spl/tests/iterator_046.phpt
@@ -0,0 +1,51 @@
+--TEST--
+SPL: CachingIterator and __toString using bypassed string keys
+--FILE--
+<?php
+
+class MyFoo
+{
+ function __toString()
+ {
+ return 'foo';
+ }
+}
+
+class MyCachingIterator extends CachingIterator
+{
+ function __construct(Iterator $it, $flags = 0)
+ {
+ parent::__construct($it, $flags);
+ }
+
+ function fill()
+ {
+ echo __METHOD__ . "()\n";
+ foreach($this as $v) ;
+ }
+
+ function show()
+ {
+ echo __METHOD__ . "()\n";
+ foreach($this as $v)
+ {
+ var_dump((string)$this);
+ }
+ }
+}
+
+$it = new MyCachingIterator(new ArrayIterator(array(0, 'foo'=>1, 'bar'=>2)), CachingIterator::TOSTRING_USE_KEY);
+
+$it->fill();
+$it->show();
+
+?>
+===DONE===
+<?php exit(0); ?>
+--EXPECTF--
+MyCachingIterator::fill()
+MyCachingIterator::show()
+string(1) "0"
+string(3) "foo"
+string(3) "bar"
+===DONE===