Множественного наследования в PHP нет (ну в классическом понимании), множественное это когда унаследуются от несколькоих классов сразу. Сегодня встретил конструкцию типа:
$this->parent->parent->nameMethod()
Очевидно класс в котром я нахожусь чей-то наследник, а тот ещё чек-то наследник в свою очередь.
1) Ограничен ли уровень такого наследования в глубину?
2) Хороший ли это тон, правильная архитектура проекта допускает такое, или лучше ограничиться всегда одним уровнем?
1) В данном случае идет обращение к переменной экземпляра по имени $parent
, а не к родительскому объекту.
Как правильно заметили, для обращение к методу родителя используется конструкция parent::nameMethod()
2) Это совершенно нормальная практика, которая используется повсеместно. Конкретно про PHP на вскидку хороший пример в голову не приходит, поскольку ООП там не является определяющей язык парадигмой, а вот в той же Java развесистые кусты наследования сплошь и рядом.
Более того, многие считают практику строительства большого дерева наследования единственно верной в разрезе SOLID.
Например:
abstract class Animal{
function die(){
die();
}
abstract function move();
abstract function say();
}
abstract class Bird extends Animal{
abstract function say();
function move(){
fly();
}
}
class Raven extends Bird{
function say(){
echo "КАР!!";
}
}
Теперь у объекты класса Raven будут уметь летать через метод родителя move()
, умирать через метод деда die()
и каркать собственной реализацией метода say()
Айфон мало держит заряд, разбираемся с проблемой вместе с AppLab
Перевод документов на английский язык: Важность и ключевые аспекты
Может кто-нибудь объяснить, как работает этот классХочу научиться использовать mvc, нашел такой класс для работы с бд, но разобраться до конца...
Добрый деньНачал переносить свое веб приложение на хостинг
Как подключить в php api yandex музыки ? Поделитесь готовыми примерами использования music yandex api в php