как вызвать защищенный метод ?
Встала простая задача 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, время: 23:02. |