Как наследуются функций в PHP? Класс single - типичный синглетон.
baseClass наследует сингл, в нем есть некие функции:abstract class baseClass extends single
{
public function func1()
{
return __CLASS__;
}
}
Так же есть класс наследующий baseClassclass class1 extends baseClass
{
public function func2()
{
$this->func1(); //return - baseClass , а должен, маму его, т.е. папу, т.е. меня за ногу - class1;
echo __CLASS__; // здесь выдаст class1
}
}
Возвращает baseClass, я голову сломал. Я не понимаю ООП? Базовый класс мною создан дабы не писать каждый раз одни и те же функции и переменные. Т.е если class1 and class2 наследуют baseClass то и func1 разные (в моем случае разность в возвращаемых именах)
Пойду перекурю.....

21 Авг 2019 в 07:04
197 +1
0
Ответы
1

Проблема здесь не в наследовании функций, а в том, что метод func1 в базовом классе baseClass использует специальную магическую константу CLASS, которая возвращает имя класса, в котором был вызван данный метод. Поскольку метод func1 вызывается из класса baseClass, то он вернет имя этого класса, а не класса, в котором он был унаследован (в данном случае class1).

Если вы хотите, чтобы метод func1 возвращал имя класса, в котором он был унаследован, вам следует использовать метод get_class($this), который вернет имя текущего объекта, независимо от того, из какого класса он был вызван.

Пример исправленного базового класса baseClass:

abstract class baseClass extends single {
public function func1() {
return get_class($this);
}
}

Теперь при вызове метода func1 из класса class1, он должен вернуть имя класса class1.

20 Апр 2024 в 13:08
Не можешь разобраться в этой теме?
Обратись за помощью к экспертам
Название заказа не должно быть пустым
Введите email
Бесплатные доработки
Гарантированные бесплатные доработки
Быстрое выполнение
Быстрое выполнение от 2 часов
Проверка работы
Проверка работы на плагиат
Интересные статьи из справочника
Поможем написать учебную работу
Название заказа не должно быть пустым
Введите email
Доверьте свою работу экспертам
Разместите заказ
Наша система отправит ваш заказ на оценку 95 454 авторам
Первые отклики появятся уже в течение 10 минут
Прямой эфир