как вызвать защищенный метод ?
Встала простая задача PHP oop, но почему то заступорился на ней.
Есть класс "First" и наследник класс "Second". В дочернем классе переопределена переменная ($number) родительского класса. И есть необходимость вызвать метод родительского класса с первичным значением переменной $number Проще на примере...
class First {
protected $number = "First";
protected function getNumber() {
return $this->number;
}
}
class Second extends First {
protected $number = "Second";
}
$first = new First;
$second = new Second;
// здесь нужно вывести "First"
echo $second->getNumber();
Пример упростил для более лёгкого понимания общей цели. В коде зашито все так что ни свойства и методы менять нельзя. Можно только добавлять к этому куску кода свой. Никак не могу вызвать этот метод. :blink: Если бы во втором классе не переопределялась переменная, то можно было бы просто добавить - return parent::getNumber(); Но, там жизненно необходимо переопределение этой переменной. Есть какие то идеи? Может я что то пропустил? Такая мелочь (казалось) а туплю уже целый день на этим. :help: |
И что в таком случае делать?
А зима не просто блиизко... |
Вопрос немного меняется (незнаю, возможно ли исправить название темы здесь).
Продолжал копать в этой конструкции и пришел к выводу, что мне нужно во первых переопределить метод getNumber в классе наследнике и каким то образом туда ещё раз поместить значение свойства $number из родительского класса. Новый вариант ...
class First {
protected $number = "First";
protected $first;
protected function getNumber() {
return $this->number;
}
protected function getFirst() {
// Как загнать значение переменной $number в $first ?
return $this->first;
}
}
class Second extends First {
protected $number = "Second";
public function getNumber() {
return $this->first;
}
}
$first = new First;
$second = new Second;
echo $second->getNumber(); // здесь нужно вывести "First"
Как загнать значение переменной $number в $first ? |
class First {
protected static $number = "First";
protected function getNumber() {
return $this->number;
}
}
class Second extends First {
protected static $number = "Second";
public function getNumber() {
return parent::$number;
}
}
$first = new First;
$second = new Second;
// здесь нужно вывести "First"
echo $second->getNumber();
|
| Часовой пояс GMT +3, время: 22:46. |