0

可能重复:
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
?>
4

1 回答 1

1

你不能,PHP 不支持多重继承。您可以A继承自B,反之亦然;或者您可以根据需要包装额外的实例AB内部实例以及C对它们的代理方法调用:

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 纯粹主义者)

于 2012-06-14T13:44:05.987 回答