barthon
Новичок
Возникла проблема с пониманием доступа к свойству с различными модификаторами в базовом и производном классе из метода базового класса. Нет четкого понимания процесса переопределения и доступности данного свойства.
Пример:
Результат:
a
object(b)#1 (2) { ["myvar"]=> string(1) "b" ["myvar":"a"rivate]=> string(1) "a" }
Почему отображается "а"? Каков четкий алгортм определения какое значение свойства будет доступно?
P.S. мой вопрос относится ко всем возможным комбинациям модификаторов:
private/private - 'a'
private/protected - 'a'
private/public - 'a'
protected/protected - 'b'
protected/public - 'b'
public/public - 'b'
Пример:
PHP:
class a {
private $myvar='a';
function my() {
echo $this->myvar;
echo '<br>';
var_dump($this);
}
}
class b extends a {
public $myvar='b';
}
$b=new b;
$b->my();
a
object(b)#1 (2) { ["myvar"]=> string(1) "b" ["myvar":"a"rivate]=> string(1) "a" }
Почему отображается "а"? Каков четкий алгортм определения какое значение свойства будет доступно?
P.S. мой вопрос относится ко всем возможным комбинациям модификаторов:
private/private - 'a'
private/protected - 'a'
private/public - 'a'
protected/protected - 'b'
protected/public - 'b'
public/public - 'b'
Последнее редактирование: