📄 bug31185.phpt
字号:
--TEST--Bug #31185 (Crash when exceptions thrown from ArrayAccess::offsetUnset())--SKIPIF--<?php if (!extension_loaded("spl")) print "skip"; ?>--FILE--<?phpclass FooBar implements ArrayAccess { private $array = array(); public function offsetExists($index) { return isset($this->array[$index]); } public function offsetGet($index) { return $this->array[$index]; } public function offsetSet($index, $value) { echo __METHOD__ . "($index, $value)\n"; $this->array[$index] = $value; } public function offsetUnset($index) { throw new Exception('FAIL'); unset($this->array[$index]); }}$i = 0; $j = 0;$foo = new FooBar();$foo[$j++] = $i++;$foo[$j++] = $i++;$foo[$j++] = $i++;try{ unset($foo[1]);}catch (Exception $e){ echo "CAUGHT: " . $e->getMessage() . "\n";}print_R($foo);?>===DONE===--EXPECT--FooBar::offsetSet(0, 0)FooBar::offsetSet(1, 1)FooBar::offsetSet(2, 2)CAUGHT: FAILFooBar Object( [array:FooBar:private] => Array ( [0] => 0 [1] => 1 [2] => 2 ))===DONE===
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -