Çoklu Miras PHP sınıf düzeyinde izin verilir?

5 Cevap php

Çoklu Miras PHP sınıf düzeyinde izin verilir?

5 Cevap

Çoklu kalıtım (olmak nasıl mutabık) Henüz PHP çözülmüş değil Diamond Problem, muzdarip. Bu durumda, there is no multiple inheritance in PHP.

    BaseClass
       /\
      /  \
 ClassA  ClassB
      \  /
       \/
     ClassC

Eğer her ikisi ClassA ve ClassB kendi yöntemini tarif foo(), hangisini aramak istiyorum ClassC?

Yatay yeniden kullanım sonrasında ise - - Decorator içine bakmak veya {[Kullanmadan object composition veya interfaces (ki izin veririm çoklu kalıtım) ya da teşvik edilmektedir (3)]} desen kadar biz Traits (veya Grafts veya ne olursa olsun o çağrılacaktır) var.

Bazı Referans:

PHP çoklu mirası desteklemez.

Sen yöntemi ve özelliği heyet kullanarak taklit edebilir, ancak is_a() veya instanceof ile çalışmaz:

class A extends B
{
    public function __construct($otherParent)
    {
        $this->otherParent = $otherParent;
    }

    public function __call($method, $args)
    {
        $method = array($this->otherParent, $method);

        return call_user_func_array($method, $args);
    }
}

PHP sınıfları için birden çok devralma desteklemiyor değil.

Hayır, PHP sınıfları sadece birden, bir sınıfa değil, devralabilir.