Свойство класса пустое... Почему? Скажите, пож-ста.
есть класс А , в нем определены статично-публичное св-во $price и публичный статичный метод meth с данным св-вом $price, который присваивает внутри класса значение (self).
есть класс B потомок класса А. Метод класса переопределен, внутри свойство $price класса А задано через ::parent.
Вопрос,
почему это свойство;$price пустое, если к нему обратится как A::$price?
и как получить правильное значение...?

21 Авг 2019 в 07:00
199 +1
1
Ответы
1

По всей видимости, проблема заключается в том, что статичные свойства (static properties) в PHP не наследуются подклассами. Когда вы обращаетесь к свойству $price как A::$price из класса B, оно действительно является пустым, потому что класс B не наследует статичное свойство $price из класса A.

Для того чтобы получить доступ к значению статичного свойства $price в подклассе B, вам нужно обращаться к нему напрямую через родительский класс A, например, A::$price. Если вам необходимо использовать это значение в подклассе B, вам лучше создать отдельное статичное свойство в классе B и установить его значение в соответствии с $price из класса A.

Пример:

class A {
public static $price = 100;
public static function meth() {
self::$price = 200;
}
}
class B extends A {
public static $newPrice;
public static function meth() {
parent::meth(); // вызываем метод родительского класса для установки значения $price
self::$newPrice = parent::$price; // сохраняем значение $price от родительского класса
}
}
B::meth();
echo B::$newPrice; // выведет 200

Таким образом, вы можете сохранить значение $price от родительского класса и использовать его в подклассе B.

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