Edit report at https://bugs.php.net/bug.php?id=62464&edit=1
ID: 62464 Comment by: ni...@php.net Reported by: j dot henge-ernst at interexa dot de Summary: implementing two interfaces with same signature no longer gives a fatal error Status: Open Type: Bug Package: Scripting Engine problem Operating System: linux PHP Version: 5.3Git-2012-07-02 (Git) Block user comment: N Private report: N New Comment: I'm not sure I see the problem. If the class satisfies both interfaces, why should there be an error? E.g., consider: interface Iterator { function current(); function key(); function next(); function valid(); } interface RewindableIterator extends Iterator { function rewind(); } interface ReversableIterator extends Iterator { function prev(); } class Foo implements RewindableIterator, ReversableIterator { // ... } Why shouldn't the class be able to implement both, as long as the method declarations don't disagree? Previous Comments: ------------------------------------------------------------------------ [2012-07-02 16:11:52] j dot henge-ernst at interexa dot de Description: ------------ having two different interfaces with same method no longer causes a fatal error like in php 5.3.8. With fix for bug #43200 (my guess) it is now possible to inherit another interface which has the same method signature as a previous interface. implementing an interface with methods which collide with a method name which is already implemented by another interface should cause an error. >From my point of OOP it does not make sense as the meaning of the colliding >interface method do not express the same, else both interfaces with the same >signature part should extend that base interface. It's the opposite of bug #46705 Such a change of the language should not be done in a minor release. Test script: --------------- <?php interface AInterface { public function getLogicalKey(); } interface BInterface { public function getLogicalKey(); } class AClass implements AInterface { public function getLogicalKey() { return 1; } } class BClass extends AClass implements BInterface { } Expected result: ---------------- Fatal error: Can't inherit abstract function BInterface::getLogicalKey() (previously declared abstract in AInterface) in x.php on line 12 ------------------------------------------------------------------------ -- Edit this bug report at https://bugs.php.net/bug.php?id=62464&edit=1