Bug #43200 [Com]: Interface implementation / inheritence not possible in abstract classes

From: Date: Wed, 15 Dec 2010 23:38:43 +0000
Subject: Bug #43200 [Com]: Interface implementation / inheritence not possible in abstract classes
References: 1  Groups: php.bugs 
Request: Send a blank email to php-bugs+get-157018@lists.php.net to get a copy of this message
Edit report at http://bugs.php.net/bug.php?id=43200&edit=1 ID: 43200 Comment by: kucho86 at gmail dot com Reported by: daniel dot gorski at develnet dot org Summary: Interface implementation / inheritence not possible in abstract classes Status: Bogus Type: Bug Package: Scripting Engine problem Operating System: Linux PHP Version: 5.3CVS-2007-11-05 (CVS) Block user comment: N Private report: N New Comment: Are you planning to cover this bug?? It's pretty simple to fix and since interfaces define behaviours and classes implements them, this should be possible. It goes against Object Oriented Programming concepts. Previous Comments: ------------------------------------------------------------------------ [2007-11-05 16:34:21] cellog@php.net <?php interface A { function foo(); } abstract class B implements A { } class C extends B { public function foo() { echo 'works'; } } $o = new C(); $o->foo(); ?> If you don't want to implement a method from an interface, don't redeclare it, and the code will work as intended. ------------------------------------------------------------------------ [2007-11-05 15:50:30] daniel dot gorski at develnet dot org Description: ------------ PHP 5.3.0-dev (cli) (built: Nov 5 2007 16:42:56) from todays CVS HEAD. The implementation of interfaces in concrete abstract classes and their inheritence is not possible: Reproduce code: --------------- <?php interface A { function foo(); } abstract class B implements A { abstract public function foo(); } class C extends B { public function foo() { echo 'works'; } } $o = new C(); $o->foo(); ?> Expected result: ---------------- Echoing "works" Actual result: -------------- Fatal error: Can't inherit abstract function A::foo() (previously declared abstract in B) in ... ------------------------------------------------------------------------ -- Edit this bug report at http://bugs.php.net/bug.php?id=43200&edit=1

« previous php.bugs (#157018) next »