Я новичок в PHP и получил два вопроса. Когда я попробовал следующий код:«this» in class inheritance, PHP
<?php
class Base{
public function getId(){
return $this->id;
}
};
class Derived extends Base{
public $id = 1;
public function id(){
return $this->id;
}
};
$d1 = new Derived();
echo $d1->id();//echo 1
echo $d1->getId();//echo 1
?>
Этот код, приведенный выше, будет звучать два раза.
Однако, когда я попытался следующий код:
<?php
class Base{
public function getId(){
return $this->id;
}
};
class Derived extends Base{
private $id = 1;
public function id(){
return $this->id;
}
};
$d1 = new Derived();
echo $d1->id();//echo 1
echo $d1->getId();//Cannot access private property Derived::$id
?>
Вызов второй функции даст мне ошибку «не удается получить доступ к частной собственности Derived :: $ ID». Итак, мой вопрос в том, что такое $ this в базе, о которой я говорил, когда я сделал $ d1-> getId()?
Я довольно смущен тем, что если $ this относится к экземпляру d1, тогда он должен иметь доступ к частному $ id. Однако, если $ this относится к базе внутри $ d1, то как она может получить свойство $ id из класса Derived? Благодаря!
Метод id() 'избыточен: он выполняет то же, что и унаследованный метод getId()' – RomanPerekhrest
Поскольку '$ id' является приватным в классе Derived, он недоступен в базовом классе – RiggsFolly
http: // stackoverflow ,com/questions/7469759/access-child-property-from-parent-scope – RomanPerekhrest