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たり、その逆を行うことができます。または、必要に応じて、追加のインスタンスとその内部をラップABCそれらへのプロキシメソッド呼び出しを行うことができます。

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 に答える