Bug #60161 [Opn]: Implementing an interface extending Traversable is order dependent
| From: | levim@php.net | Date: | Thu, 27 Mar 2014 01:31:51 +0000 |
| Subject: | Bug #60161 [Opn]: Implementing an interface extending Traversable is order dependent | ||
| References: | 1 | Groups: | php.bugs |
| Request: | Send a blank email to php-bugs+get-184911@lists.php.net to get a copy of this message | ||
Edit report at https://bugs.php.net/bug.php?id=60161&edit=1
ID: 60161
Updated by: levim@php.net
Reported by: nikic@php.net
Summary: Implementing an interface extending Traversable is
order dependent
Status: Open
Type: Bug
Package: Scripting Engine problem
PHP Version: 5.4.0beta2
Block user comment: N
Private report: N
New Comment:
I don't care as much about the abstract issue (it's filed separately: https://bugs.php.net/bug.php?id=62609) but I'd
really like to see the order restriction be relaxed on interfaces.
Previous Comments:
------------------------------------------------------------------------
[2013-10-12 17:57:02] maciej dot sz at gmail dot com
The order dependency of interface names is a minor drawback, but same thing happens when one tries
to put an abstract class between the interface and specific implementation. And this is a big
problem:
<?php
interface IFoo extends \Traversable
{}
abstract class AFoo implements IFoo
{}
?>
Throws:
Class AFoo must implement interface Traversable as part of either Iterator or IteratorAggregate in
Unknown on line 0
------------------------------------------------------------------------
[2011-11-02 17:50:13] nikic@php.net
Yes, exactly. That's what I was trying to do when I encountered the issue.
------------------------------------------------------------------------
[2011-11-02 17:16:29] johannes@php.net
You mean for a type hint which says "traversable and having that function"? That might
indeed be a valid reason I didn't think about ..
------------------------------------------------------------------------
[2011-11-02 14:44:55] nikic@php.net
@johannes: How could you then hint that a class must be Traversable in some way (either Iterator or
Aggregate)? Or shouldn't that be possible at all?
------------------------------------------------------------------------
[2011-11-02 12:21:47] johannes@php.net
Actually we should forbid extending Traversable. This should only only only be used by internal
classes (Iterator, iteratorAggregate or classes providing the C get_iterator hooks)
------------------------------------------------------------------------
The remainder of the comments for this report are too long. To view
the rest of the comments, please view the bug report online at
https://bugs.php.net/bug.php?id=60161
--
Edit this bug report at https://bugs.php.net/bug.php?id=60161&edit=1