@wideShift

Почему self так работает?

Почему self указывает не на текущий класс?
class Test {
		const TEST = true;
	}

	class Test2 extends Test {
	  	echo self::TEST;
 	}

	print_r((new Test2)->test());

Как константы работают при наследовании?
Константы импортируются в классы потомки?
  • Вопрос задан
  • 116 просмотров
Пригласить эксперта
Ответы на вопрос 3
vesper-bot
@vesper-bot
Любитель файрволлов
Да, константы, как и любое другое поле, принадлежащее классу, будет доступно из класса-потомка, если оно в классе не было объявлено как private. Если бы вы в Test2 переопределили "TEST" - получили бы переопределенное значение. https://www.php.net/manual/ru/language.oop5.late-s...
Ответ написан
Комментировать
@sl0
Константы работают так же как и поля. Им тоже можно прописать public, protected, private. Если уровень доступа явно не задан, то считается, что он - public. Все публичное - наследуется.
Можете попробовать прописать в Test
private const TEST = true;
и увидите разницу.
Ответ написан
Комментировать
php666
@php666
PHP-макака
Автор в какой-то раз задает какие-то сверхсложные вопросы. Как выделяется память, как это работает на уровне интерпретации и тп.
Может стоит подход к изучению изменить?

Как константы работают при наследовании?
Константы импортируются в классы потомки?
ну типа да, на то оно и наследование.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы