Задать вопрос
vitaly_74
@vitaly_74

Если я унаследуюсь от родительского класса, то как будет работать этот метод?

public function current_user(): User{
       if (is_null($this->current_user)){
           /**@var User $record*/
           $record = User::find()->where(['id'=>$this->user_id])->one();
           if ($record){
               $this->current_user = $record;
           }else{
               $this->current_user = new User;
           }
       }
       return $this->current_user;
    }


Вопрос такой: если я буду вызывать в дочернем классе этот метод, то он будет брать #this из родительского или будет считать this дочерним классом? (этот метод в дочернем классе не переопределяю)
  • Вопрос задан
  • 70 просмотров
Подписаться 1 Простой Комментировать
Решения вопроса 1
rpsv
@rpsv
делай либо хорошо, либо никак
При наследовании дочерний метод заменяет родительский, к родительской реализации можете обратиться через parent. Подробнее: https://www.php.net/manual/ru/language.oop5.inheri...

Да и вообще весь раздел прочитайте на php.net для хотя бы базового понимания как работают классы и ООП в php. Массу вопросов уберет)

Вопрос такой: если я буду вызывать в дочернем классе этот метод, то он будет брать #this из родительского или будет считать this дочерним классом? (этот метод в дочернем классе не переопределяю)

В дочернем классе this указывает на комбинацию родитель + текущий ребенок. То есть вы из ребенка можете вызывать родительские классы, использовать родительские переменные, но все в пределах видимости (public, protected). Закрытые (private) методы и переменные доступны только в текущем классе (родителе или ребенке)
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы