@yv1995

Как в php решается проблема с множественным наследованием?

Как в php решается проблема с множественным наследованием? Я знаю ,что множественное наследование решается с помощью trait , но вопрос в следующем , как решается проблема если у нас к примеру попадается 3 одинаковых метода или свойства, т.е. как решается данная проблема? Какому классу отдается предпочтение?
  • Вопрос задан
  • 410 просмотров
Решения вопроса 1
@sunrails
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 4
65536
@65536
Да вообще наследование неправильно устроено. Надо было делать как у людей - маму и папу. То есть чтобы класс мог унаследоваться только от двух классов и никак иначе. Таким образом имеем множественное наследование хоть до бесконечности. Не хватило мамы с папой, добавляем бабушку с дедушкой, можно по 2 штуки, и т д. Единственное что понадобится это добавить в язык половой признак класса и модификаторы для полей и методов, которые будут задавать приоритет при наличии у обоих родителей, если задано у обоих, то берём папин вариант (патриархат). Так можно было бы наглядно комбинировать разных мам и пап чтобы порождать детей с нужными повадками.
Ответ написан
LittleFatNinja
@LittleFatNinja
горе девелопер, любитель лютой садомии
не хватало в пхп еще этого
Ответ написан
alex1442
@alex1442
php.net/manual/ru/language.oop5.traits.php

Смотрите примеры,
(насчет нескольких трейтов по ссылке ничего не говорится)

Запилил тестовый скрипт, при коллизиях в именах методов разных трейтов вкитывается фатальная ошибка:
UPD:
PHP Fatal error:  Trait method sayHello has not been applied, because there are collisions with other trait methods on MyHelloWorld in .... on line ...
Ответ написан
Комментировать
romy4
@romy4
Exception handler
Трейтами. Но это ужасный костыль. Не понимаю, почему было не встроить человеческое множественное наследование.
Ответ написан
Ваш ответ на вопрос

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

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