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

Reply via email to