#27073 [Sus->Csd]: Strange behaviour after extending interface Iterator wo adding anything new

From: Date: Mon, 02 Jan 2006 08:04:49 +0000
Subject: #27073 [Sus->Csd]: Strange behaviour after extending interface Iterator wo adding anything new
References: 1  Groups: php.bugs 
Request: Send a blank email to php-bugs+get-91340@lists.php.net to get a copy of this message
ID: 27073 Updated by: sniper@php.net Reported By: andrey@php.net -Status: Suspended +Status: Closed Bug Type: Scripting Engine problem Operating System: * PHP Version: 5.0.0b3 Assigned To: helly New Comment: Error has changed. Previous Comments: ------------------------------------------------------------------------ [2004-02-05 11:34:53] helly@php.net This is something we may fix later but for now the following is enough: class FubarProblem implements Iterator, NewIterator { public function next(){} public function key(){} public function current(){} public function hasMore(){} public function rewind(){} } As you see here the Iterator interface is inherited first so that the checks are done in the correct order. ------------------------------------------------------------------------ [2004-02-05 07:54:29] andrey@php.net I am still experiencing the problem : andrey@poohie:~/test> php -v PHP 5.0.0RC1-dev (cli) (built: Feb 4 2004 17:26:46) Copyright (c) 1997-2004 The PHP Group Zend Engine v2.0.0-dev, Copyright (c) 1998-2004 Zend Technologies andrey@poohie:~/test> php gg.php PHP Fatal error: Class FubarProblem must implement interface Traversable as part of either Iterator or IteratorAggregate in Unknown on line 0 ------------------------------------------------------------------------ [2004-01-28 08:51:04] andrey@php.net Description: ------------ See the code attached : class FubarOK has no problem implementing Iterator. interface NewIterator just extends Iterator and adds nothing, and here comes the fun - an error message when FubarProblem tries to implement NewIterator. Reproduce code: --------------- <?php class FubarOk implements Iterator { public function next(){} public function key(){} public function current(){} public function hasMore(){} public function rewind(){} } interface NewIterator extends Iterator { } class FubarProblem implements NewIterator { public function next(){} public function key(){} public function current(){} public function hasMore(){} public function rewind(){} } ?> Actual result: -------------- PHP Fatal error: Class FubarProblem must implement interface Traversable as part of either Iterator or IteratorAggregate in Unknown on line 0 ------------------------------------------------------------------------ -- Edit this bug report at http://bugs.php.net/?id=27073&edit=1

« previous php.bugs (#91340) next »