⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 iterator_041b.phpt

📁 PHP v6.0 For Linux 运行环境:Win9X/ WinME/ WinNT/ Win2K/ WinXP
💻 PHPT
字号:
--TEST--SPL: iterator_to_array() and exceptions from delayed 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 = 0;		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); ?>--EXPECTF--===iterator_to_array===State 0: __construct()State 1: __construct()State 2: rewind()State 3: valid()State 4: current()State 5: key()State 6: next()Fatal error: Ignoring exception from MyArrayIterator::__destruct() while an exception is already active (Uncaught Exception in %s on line %d) in %siterator_041b.php on line %d

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -