PHP Multiple Inheritance with Interfaces

PHP doesn’t have multiple inheritance. If you have PHP 5.4, though, you can use traits to at least avoid every class having to copy code.

interface A {
    public function do1();
    public function do2();
    public function do3();

trait Alike {
    public function do1() { }
    public function do2() { }
    public function do3() { }

interface B {
    public function do4();
    public function do5();
    public function do6();

trait Blike {
    public function do4() { }
    public function do5() { }
    public function do6() { }

class C implements A, B {
    use Alike, Blike;

class D implements A {
    use Alike;

    // You can even "override" methods defined in a trait
    public function do2() { }

Note, though, you have to both implement the interface and use the trait (or, of course, provide your own implementation). And C and D are not related at all, except in both implementing the A interface. Traits are basically just interpreter-level copy and paste, and do not affect inheritance.

About the author

PHP | MVC | Codeignitor | Zend | Yii | Smarty | Android | Laravel Expert Senior Software Developer.I love my job and feel happy to working on new ideas and technologies.

Leave a Comment

Comment (required)

You may use these HTML tags and attributes: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>

Name (required)
Email (required)