从多个类继承

时间:2012-06-14 13:36:39

标签: php oop multiple-inheritance

  

可能重复:
  Is Multiple Inheritance allowed at class level in PHP?

如何解决此问题

<?php
class A {
    public function af() {
        print 'a';
    }
    public function bark() {
        print ' arf!';
    }
}

class B {
    public function bf() {
        print 'b';
    }
}

class C extends B, A /*illegal*/ {
    public function cf() {
        print 'c';
    }

    public function bark() {
        print ' ahem...'; 
        parent::bark();
    }
}
    
$c = new C; 
$c->af(); 
$c->bf(); 
$c->cf();
print "<br />";
$c->bark();
//Parse Error
?>

1 个答案:

答案 0 :(得分:1)

你不能,PHP不支持多重继承。您可以A继承B,反之亦然;或者您可以在A中包含BC的其他实例,并根据需要调用代理方法:

class C {
    protected $a, $b;
    function __construct(A $a, B $b) {
        $this->a = $a;
        $this->b = $b;
    }
    function af() {
        return $this->a->af();
    }
    function bf() {
        return $this->b->bf();
    }
    // ... etc...
}

(现在通过依赖注入来安抚OOP纯粹主义者)