Edit report at http://bugs.php.net/bug.php?id=51826&edit=1
ID: 51826
Comment by: crrodriguez at opensuse dot org
Reported by: 1000235409 at smail dot shnu dot edu dot cn
Summary: maybe a wrong oop logic.
Status: Open
Type: Bug
Package: Class/Object related
Operating System: WINDOWS
PHP Version: 5.3SVN-2010-05-14 (SVN)
New Comment:
Expected behaviour, your code causes ambiguity.
Previous Comments:
------------------------------------------------------------------------
[2010-05-14 17:42:35] 1000235409 at smail dot shnu dot edu dot cn
I have adapted those code(see it below) into delphi(object pascal, on
Delphi2010), however, nothing wrong at all. so i think it should be a
wrong oop
logic in php5(5.2 included also, since i've tested then...)
Type
TAbstractParam = Class(TInterfacedObject)
Procedure getType(); Virtual; Abstract;
End;
IParam = Interface
Procedure getType();
End;
TPrimativeParam = Class(TAbstractParam, IParam)
Procedure getType();
End;
//Other code omitted...
------------------------------------------------------------------------
[2010-05-14 17:15:02] 1000235409 at smail dot shnu dot edu dot cn
Description:
------------
A fatal error generates when a class extends from an abstract class and
implements
from an interface both with a same named abstract (all methods defined
inside
interfaces are abstract) method inside.
Test script:
---------------
<?php
abstract class TAbstractParam {
public abstract function getType(); //getType
}
interface IParam {
public function getType(); //getType again.
}
class TPrimativeParam extends TAbstractParam implements IParam {
public function getType() {return 'VARCHAR'; } //another getType, the
fatal error goes here.
}
Expected result:
----------------
[just nothing...]
Actual result:
--------------
Fatal error: Can't inherit abstract function IParam::getType()
(previously
declared abstract in TAbstractParam) in E:\foo.php on line 10
------------------------------------------------------------------------
--
Edit this bug report at http://bugs.php.net/bug.php?id=51826&edit=1