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