Edit report at http://bugs.php.net/bug.php?id=51826&edit=1

 ID:               51826
 User updated by:  1000235409 at smail dot shnu dot edu dot cn
 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:

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...


Previous Comments:
------------------------------------------------------------------------
[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

Reply via email to