mirror of
https://github.com/php/php-src.git
synced 2024-12-01 05:43:38 +08:00
54 lines
1.1 KiB
PHP
54 lines
1.1 KiB
PHP
--TEST--
|
|
IteratorAggregate::getIterator bad return type
|
|
--FILE--
|
|
<?php
|
|
|
|
class bad1 implements IteratorAggregate {
|
|
function getIterator() {
|
|
return null;
|
|
}
|
|
}
|
|
|
|
class bad2 implements IteratorAggregate {
|
|
function getIterator() {
|
|
return new stdClass;
|
|
}
|
|
}
|
|
|
|
class bad3 implements IteratorAggregate {
|
|
function getIterator() {
|
|
return 1;
|
|
}
|
|
}
|
|
|
|
class bad4 implements IteratorAggregate {
|
|
function getIterator() {
|
|
return array(1,2,3);
|
|
}
|
|
}
|
|
|
|
|
|
function f($className) {
|
|
try {
|
|
foreach (new $className as $k=>$v) {
|
|
echo "$k => $v\n";
|
|
}
|
|
} catch (Exception $e) {
|
|
echo $e->getLine() . ": " . $e->getMessage() ."\n";
|
|
}
|
|
}
|
|
|
|
f("bad1");
|
|
f("bad2");
|
|
f("bad3");
|
|
f("bad4");
|
|
|
|
?>
|
|
===DONE===
|
|
--EXPECTF--
|
|
30: Objects returned by bad1::getIterator() must be traversable or implement interface Iterator
|
|
30: Objects returned by bad2::getIterator() must be traversable or implement interface Iterator
|
|
30: Objects returned by bad3::getIterator() must be traversable or implement interface Iterator
|
|
30: Objects returned by bad4::getIterator() must be traversable or implement interface Iterator
|
|
===DONE===
|