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] [email protected]
<?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