Здравствуйте. Подскажите, пожалуйста, как в родительском классе вызвать метод из дочернего? Для этого обязательно определять его в родительском а потом переопределять в дочернем или нет?
Вообще, очень желательно. Потому что родительский класс не должен знать, что у него существует дочерний. Но технически - необязательно, потому что php весь такой динамический. denis01, ему parent не катит, он хочет наоборот делать.
Вообще, не обязательно переопределять. Ты можешь имеет там другие методы которых нету в родительком, на то он дочерний класс, что может расширяться. А можно определить с тем же именем и это не приведет к ошибке. Можно в качестве параметра функции объект дочернего класса. Код (PHP): class A{ public function test(B $b){ echo '<pre>'; var_dump($b); echo "</pre>"; echo __CLASS__."<br>"; echo $b->test(); } } class B extends A{ public function test() { echo __CLASS__; } } $a = new A(); $a->test(new B()); Этот подход применителем к любому объекту любого класса. Не обязательно чтобы он наследовался.
mahmuzar, это не очень хорошо, когда родительский класс знает о потомках. Иногда это делается, но лучше избегать
mkramer, согласен. Добавлено спустя 13 минут 52 секунды: Так то в этом примере он не то чтобы знает о дочерном классе, он знает о типе B. С тем же успехом можно указать туда тип C если мы собираемся с ним работать. Если есть желание чтобы были актуальны все объекты всех наследуюмых классов, то можно указать тип A в итоге можно передавать любой объект дочерного класса, остальные будут отсекаться.