📄 bug37457.phpt
字号:
--TEST--Bug #37457 (Crash when an exception is thrown in accept() method of FilterIterator)--SKIPIF--<?php if (!extension_loaded("spl")) print "skip"; ?>--FILE--<?phpclass Collection implements Iterator{ protected $array, $valid = false; public function __construct(array $a) { echo __METHOD__ . "\n"; $this->array = $a; } public function current() { echo __METHOD__ . "\n"; return current($this->array); } public function key() { echo __METHOD__ . "\n"; return key($this->array); } public function next() { echo __METHOD__ . "\n"; $this->valid = (false !== next($this->array)); } public function valid() { echo __METHOD__ . "\n"; return $this->valid; } public function rewind() { echo __METHOD__ . "\n"; $this->valid = (false !== reset($this->array)); }}class TestFilter extends FilterIterator{ public function accept() { echo __METHOD__ . "\n"; throw new Exception("Failure in Accept"); }}$test = new TestFilter(new Collection(array(0)));try{ foreach ($test as $item) { echo $item; }}catch (Exception $e){ var_dump($e->getMessage());}?>===DONE===--EXPECTF--Collection::__constructCollection::rewindCollection::validCollection::currentCollection::keyTestFilter::acceptstring(17) "Failure in Accept"===DONE===--UEXPECTF--Collection::__constructCollection::rewindCollection::validCollection::currentCollection::keyTestFilter::acceptunicode(17) "Failure in Accept"===DONE===
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -