iterator_041a.phpt
来自「PHP v6.0 For Linux 运行环境:Win9X/ WinME/ Wi」· PHPT 代码 · 共 110 行
PHPT
110 行
--TEST--SPL: iterator_to_array() and exceptions from destruct--SKIPIF--<?php if (!extension_loaded("spl")) print "skip"; ?>--FILE--<?phpclass MyArrayIterator extends ArrayIterator{ static protected $fail = 0; public $state; static function fail($state, $method) { if (self::$fail == $state) { throw new Exception("State $state: $method()"); } } function __construct() { $this->state = MyArrayIterator::$fail; self::fail(0, __FUNCTION__); parent::__construct(array(1, 2)); self::fail(1, __FUNCTION__); } function rewind() { self::fail(2, __FUNCTION__); return parent::rewind(); } function valid() { self::fail(3, __FUNCTION__); return parent::valid(); } function current() { self::fail(4, __FUNCTION__); return parent::current(); } function key() { self::fail(5, __FUNCTION__); return parent::key(); } function next() { self::fail(6, __FUNCTION__); return parent::next(); } function __destruct() { self::fail(7, __FUNCTION__); } static function test($func, $skip = null) { echo "===$func===\n"; self::$fail = 7; while(self::$fail < 10) { try { var_dump($func(new MyArrayIterator())); break; } catch (Exception $e) { echo $e->getMessage() . "\n"; } if (isset($skip[self::$fail])) { self::$fail = $skip[self::$fail]; } else { self::$fail++; } } }}MyArrayIterator::test('iterator_to_array');MyArrayIterator::test('iterator_count', array(3 => 6));?>===DONE===<?php exit(0); ?>--EXPECT--===iterator_to_array===State 7: __destruct()array(2) { [0]=> int(1) [1]=> int(2)}===iterator_count===State 7: __destruct()int(2)===DONE===
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?