|
php.net | support | documentation | report a bug | advanced search | search howto | statistics | random bug | login |
[2005-07-28 10:32 UTC] kpisman at gmail dot com
Description: ------------ When php code impliments standart interface (iterator in my case) and there is errors in methods called from inside of php engine (in my case key() ) i got error message with no usefull info: "Error on line 0", so on. If i will call class->key() i got normal backtrace. Expected result: ---------------- I expected to see the same results in both cases. PatchesPull RequestsHistoryAllCommentsChangesGit/SVN commits
|
|||||||||||||||||||||||||||||||||||||
Copyright © 2001-2025 The PHP GroupAll rights reserved. |
Last updated: Fri Oct 24 14:00:01 2025 UTC |
Sample code: ----- <?php class bullshit implements iterator{ function curent(){ } function next(){ } function current(){ echo "current"; throw new exception('bullshit'); } function key(){ } function rewind(){ } function valid(){ return (true); } function __destruct(){ echo "destructor"; } } $f=new bullshit; try{ foreach($f as $thisF){ } } catch (exception $e){ echo "catch !!!"; } ?> ----- Run results: php test-zend.php current Fatal error: Couldn't execute method bullshit::key in Unknown on line 0 destructor (shell returned 255) ---- So, it's clean that this appearance is incorrect. I think this is result of the same bug in Zend engine, that troubles described in first comment. Also first trouble is exists to: error is appears in unknown module at line zero.I am having this same problem. The iterator was working and the error seems to have popped up out of nowhere. I am using version 5.0.4. My CollectionIterator class looks like this: class CollectionIterator implements Iterator { private $_collection; private $_currIndex = 0; private $_keys; function __construct( Collection $objCol ) { $this->_collection = $objCol; $this->_keys = $this->_collection->getKeys(); } function rewind() { $this->_currIndex = 0; } function valid() { return $this->_currIndex < $this->_collection->getLength(); } function key() { return $this->_keys[$this->_currIndex]; } function current() { return $this->_collection->getItem( $this->_keys[$this->_currIndex] ); } function next() { $this->_currIndex++; } } This is the error: Fatal error: Couldn't execute method CollectionIterator::key in Unknown on line 0 The __construct(), rewind(), and current(), methods are all called without error leading up to the call of the key() method.