Return to foreachLoopIteratorAggregate.002.phpt CVS log | Up to [ELWIX - Embedded LightWeight unIX -] / embedaddon / php / tests / lang |
1.1 ! misho 1: --TEST-- ! 2: IteratorAggregate::getIterator bad return type ! 3: --FILE-- ! 4: <?php ! 5: ! 6: class bad1 implements IteratorAggregate { ! 7: function getIterator() { ! 8: return null; ! 9: } ! 10: } ! 11: ! 12: class bad2 implements IteratorAggregate { ! 13: function getIterator() { ! 14: return new stdClass; ! 15: } ! 16: } ! 17: ! 18: class bad3 implements IteratorAggregate { ! 19: function getIterator() { ! 20: return 1; ! 21: } ! 22: } ! 23: ! 24: class bad4 implements IteratorAggregate { ! 25: function getIterator() { ! 26: return array(1,2,3); ! 27: } ! 28: } ! 29: ! 30: ! 31: function f($className) { ! 32: try { ! 33: foreach (new $className as $k=>$v) { ! 34: echo "$k => $v\n"; ! 35: } ! 36: } catch (Exception $e) { ! 37: echo $e->getLine() . ": " . $e->getMessage() ."\n"; ! 38: } ! 39: } ! 40: ! 41: f("bad1"); ! 42: f("bad2"); ! 43: f("bad3"); ! 44: f("bad4"); ! 45: ! 46: ?> ! 47: ===DONE=== ! 48: --EXPECTF-- ! 49: 30: Objects returned by bad1::getIterator() must be traversable or implement interface Iterator ! 50: 30: Objects returned by bad2::getIterator() must be traversable or implement interface Iterator ! 51: 30: Objects returned by bad3::getIterator() must be traversable or implement interface Iterator ! 52: 30: Objects returned by bad4::getIterator() must be traversable or implement interface Iterator ! 53: ===DONE===