Множественное наследование позволяется на уровне класса в PHP?

Множественное наследование позволяется на уровне класса в PHP?

15
задан OM The Eternity 22 April 2010 в 12:54
поделиться

2 ответа

Множественное наследование страдает от проблемы алмаза , которая еще не была (согласована) решена в PHP. Таким образом, в PHP нет множественного наследования.

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

Если бы оба ClassA и ClassB определили свой собственный метод foo () , какой из них вы бы назвали в ClassC ?

] Вам предлагается либо использовать композицию объектов , либо интерфейсы (которые допускают множественное наследование), либо - если вы используете горизонтальное повторное использование - загляните в декоратор или Стратегия паттерн до тех пор, пока у нас не будет Черты (или Прививки , или как там они тогда будут называться).

Некоторая ссылка:

39
ответ дан 1 December 2019 в 00:36
поделиться

Вы можете имитировать это, используя делегирование методов и свойств, но это не будет работать с is_a () или instanceof ]:

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

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

        return call_user_func_array($method, $args);
    }
}
3
ответ дан 1 December 2019 в 00:36
поделиться
Другие вопросы по тегам:

Похожие вопросы: