@yv1995

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

Как в php решается проблема с множественным наследованием? Я знаю ,что множественное наследование решается с помощью trait , но вопрос в следующем , как решается проблема если у нас к примеру попадается 3 одинаковых метода или свойства, т.е. как решается данная проблема? Какому классу отдается предпочтение?
  • Вопрос задан
  • 289 просмотров
Пригласить эксперта
Ответы на вопрос 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
Трейтами. Но это ужасный костыль. Не понимаю, почему было не встроить человеческое множественное наследование.
Ответ написан
Ваш ответ на вопрос

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

Войти через центр авторизации
Похожие вопросы