Вызов функций дочернего класса из родительского класса
В PHP можно вызвать функцию из дочернего класса внутри родительского класса, но это требует тщательного планирования.
Рассмотрим следующий пример кода:
class whale { ... }
class fish extends whale { ... }
В этом примере у нас есть класс кита и класс рыбы, который наследуется от него. Цель состоит в том, чтобы вызвать функцию test() из класса fish внутри функции myfunc() класса whale.
Решение: используйте абстрактные классы
Для достижения при этом мы можем использовать абстрактные классы. Абстрактный класс обеспечивает реализацию определенных методов в своих дочерних классах.
abstract class whale {
function __construct() { ... }
function myfunc() { $this->test(); }
abstract function test();
}
В обновленном классе Whale мы теперь объявляем myfunc() и test() как абстрактные методы. myfunc() вызовет test(), который необходимо реализовать в дочернем классе.
class fish extends whale {
function __construct() { parent::__construct(); }
function test() { echo "So you managed to call me !!"; }
}
В классе fish мы предоставляем реализацию test(). Это гарантирует выполнение абстрактных требований родительского класса.
Благодаря этой настройке мы теперь можем вызывать функцию test() из рыбы внутри myfunc() класса кит.
$fish = new fish();
$fish->test(); // Output: So you managed to call me !!
$fish->myfunc(); // Output: So you managed to call me !!
Используя абстрактные классы, мы обеспечиваем правильное наследование и гарантируем, что дочерние классы реализуют требуемые методы. Это позволяет нам беспрепятственно вызывать функции дочерних классов из родительских классов.
Отказ от ответственности: Все предоставленные ресурсы частично взяты из Интернета. В случае нарушения ваших авторских прав или других прав и интересов, пожалуйста, объясните подробные причины и предоставьте доказательства авторских прав или прав и интересов, а затем отправьте их по электронной почте: [email protected]. Мы сделаем это за вас как можно скорее.
Copyright© 2022 湘ICP备2022001581号-3