Как наследуются функций в 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
220 +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
Не можешь разобраться в этой теме?
Обратись за помощью к экспертам
Гарантированные бесплатные доработки в течение 1 года
Быстрое выполнение от 2 часов
Проверка работы на плагиат
Поможем написать учебную работу
Прямой эфир