ID: 43200
Updated by: [EMAIL PROTECTED]
Reported By: daniel dot gorski at develnet dot org
-Status: Open
+Status: Bogus
Bug Type: Scripting Engine problem
Operating System: Linux
PHP Version: 5.3CVS-2007-11-05 (CVS)
New Comment:
<?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.
Previous Comments:
------------------------------------------------------------------------
[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/?id=43200&edit=1