Скажите, пож-ста.
есть класс А , в нем определены статично-публичное св-во $price и публичный статичный метод meth с данным св-вом $price, который присваивает внутри класса значение (self).
есть класс B потомок класса А. Метод класса переопределен, внутри свойство $price класса А задано через ::parent.
Вопрос,
почему это свойство;$price пустое, если к нему обратится как A::$price?
и как получить правильное значение...?
<?php
class A {
public static $price;
public static function meth() {
self::$price = 1;
}
}
class B extends A {
public static function meth() {
parent::$price = 2;
}
}
B::meth();
echo A::$price; //2
я все правильно понял? Если да, то всё ок как бы.
А вообще вы бы вместо вашей прозы код кидали)
Буду иметь ввиду,извините, пож-ста...
Спасибо за внимание...
В вашем коде, я думаю, echo A::$price; // если классe B не было бы parent:: ,то 1 а не 2.
class A {
//public static $price;
static $orderPrice = false;
public static function meth() {
//self::$price = 1;
// здесь формирование массива $goods.
$goods=array("0"=>1,"1"=>2);
self::setGoods($goods);
return $goods;
}
public static function setGoods($arOrderGoods){
self::$goods = false;
if(!self::$orderPrice){
self::$orderPrice = 0;
foreach($arOrderGoods as $arGood)
self::$orderPrice += $arGood ;
}
}
}
class B extends A {
public static function meth($id) {
// здесь формирование массива $goods.
$goods=array("0"=>1,"1"=>2);
parent::setGoods($goods);
return $goods;
}
}
$ooods=B::meth();
echo A::$orderPrice; //"ничего не делает"
Если бы не было класса B, то A::$orderPrice; возвращает нормальный рез-т.
пробовала B::$orderPrice пусто. почему не знаю...
Помогите, пож-ста.
PS: Скажите, пож-ста, если Вам известен какой-нито хороший ресурс про классы- практикуум по пхп...просто очень хорошо хочу понять про классы....
Очень прошу отписаться...
В вашем коде есть ошибки. 1) mech у класса A несовместимо с наследником, потому что не принимает параметр $id. 2) в функции setGoods класса А уберите self::$goods = false; , ведь такого свойства нет.
Когда я их исправил, у меня вывело 3.
Всегда выводите предупреждения и замечания php чтобы не умереть в мучениях отладки от подводных камней этого языка.
Ну... Может не по ООП, но есть классный ресурс refactoring.guru, там про паттерны хорошо рассказано.
ООП я учил посредством с++ и учил его слишком долго чтобы сказать как было бы эффективнее и лучше выучить. Так что не могу помочь. Впрочем, "php классы" в пределах первых 20 результатов Гугла содержит пару неплохих с виду руководств.