Задать вопрос
sorry_i_noob
@sorry_i_noob

Как эмулировать множественное наследование в php с помощью функции __call()?

Здравствуйте! Читаю книгу "Собеседование в вопросах и ответах" - Андрей Шевченко. В ней разбирается вопрос:
15. Поддерживает ли РНР множественное наследование?

И ответ на него:
Нет, PHP не поддерживает множественное наследование. То есть у производного класса может быть только один родительский. Но с помощью “магической” функции __call() его можно эмулировать.

Я хочу понять, как эмулировать множественное наследование с помощью функции __call(). Она же просто позволяет создавать методы и поля "на ходу". Какое отношение она имеет к множественному наследованию?
В этой функции нужно создавать объекты классов, от которых происходит множественное наследование. И пытаться вызвать функцию / обратиться к полю у них? И если это поле, то создать поле для текущего объекта с помощью __set()?
  • Вопрос задан
  • 446 просмотров
Подписаться 1 Простой Комментировать
Решения вопроса 1
Stalker_RED
@Stalker_RED
Это та самая PDF-ка, которая еще в 2012 была странноватой и местами устаревшей?

__call() - это не функция а магический метод, который вызывается при попытке вызвать несуществующий метод у объекта. Теоретически, можно в нем прописать обращение к методам из других объектов, но кому в здравом уме это может понадобится - не представляю.
Тем более, что все в том-же 2012 появились trait'ы.
Ответ написан
Пригласить эксперта
Ответы на вопрос 2
Лучше используйте трейты.
Ответ написан
Комментировать
@ChernovGV
1) В php можно наследовать несколько интерфейсов
2) Для каждого интерфейса можно создать отдельный трейт

Реализация через метод __call - это глупая и бесполезная идея.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

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