1--TEST-- 2ReflectionClass::isIterateable() 3--CREDITS-- 4Robin Fernandes <robinf@php.net> 5Steve Seear <stevseea@php.net> 6--FILE-- 7<?php 8Interface ExtendsIterator extends Iterator { 9} 10Interface ExtendsIteratorAggregate extends IteratorAggregate { 11} 12Class IteratorImpl implements Iterator { 13 public function next() {} 14 public function key() {} 15 public function rewind() {} 16 public function current() {} 17 public function valid() {} 18} 19Class IterarorAggregateImpl implements IteratorAggregate { 20 public function getIterator() {} 21} 22Class ExtendsIteratorImpl extends IteratorImpl { 23} 24Class ExtendsIteratorAggregateImpl extends IterarorAggregateImpl { 25} 26Class A { 27} 28 29$classes = array('Traversable', 'Iterator', 'IteratorAggregate', 'ExtendsIterator', 'ExtendsIteratorAggregate', 30 'IteratorImpl', 'IterarorAggregateImpl', 'ExtendsIteratorImpl', 'ExtendsIteratorAggregateImpl', 'A'); 31 32foreach($classes as $class) { 33 $rc = new ReflectionClass($class); 34 echo "Is $class iterable? "; 35 var_dump($rc->isIterateable()); 36} 37 38echo "\nTest invalid params:\n"; 39$rc = new ReflectionClass('IteratorImpl'); 40var_dump($rc->isIterateable(null)); 41var_dump($rc->isIterateable(null, null)); 42var_dump($rc->isIterateable(1)); 43var_dump($rc->isIterateable(1.5)); 44var_dump($rc->isIterateable(true)); 45var_dump($rc->isIterateable('X')); 46var_dump($rc->isIterateable(null)); 47 48echo "\nTest static invocation:\n"; 49ReflectionClass::isIterateable(); 50 51?> 52--EXPECTF-- 53Is Traversable iterable? bool(false) 54Is Iterator iterable? bool(false) 55Is IteratorAggregate iterable? bool(false) 56Is ExtendsIterator iterable? bool(false) 57Is ExtendsIteratorAggregate iterable? bool(false) 58Is IteratorImpl iterable? bool(true) 59Is IterarorAggregateImpl iterable? bool(true) 60Is ExtendsIteratorImpl iterable? bool(true) 61Is ExtendsIteratorAggregateImpl iterable? bool(true) 62Is A iterable? bool(false) 63 64Test invalid params: 65 66Warning: ReflectionClass::isIterateable() expects exactly 0 parameters, 1 given in %s on line 34 67NULL 68 69Warning: ReflectionClass::isIterateable() expects exactly 0 parameters, 2 given in %s on line 35 70NULL 71 72Warning: ReflectionClass::isIterateable() expects exactly 0 parameters, 1 given in %s on line 36 73NULL 74 75Warning: ReflectionClass::isIterateable() expects exactly 0 parameters, 1 given in %s on line 37 76NULL 77 78Warning: ReflectionClass::isIterateable() expects exactly 0 parameters, 1 given in %s on line 38 79NULL 80 81Warning: ReflectionClass::isIterateable() expects exactly 0 parameters, 1 given in %s on line 39 82NULL 83 84Warning: ReflectionClass::isIterateable() expects exactly 0 parameters, 1 given in %s on line 40 85NULL 86 87Test static invocation: 88 89Fatal error: Uncaught Error: Non-static method ReflectionClass::isIterateable() cannot be called statically in %s:43 90Stack trace: 91#0 {main} 92 thrown in %s on line 43