Ответ
В PHP существуют три основных модификатора видимости для свойств и методов класса:
public— доступен отовсюду: извне класса, в классах-наследниках и внутри самого класса.protected— доступен только внутри класса, где объявлен, и в его классах-наследниках.private— доступен исключительно внутри класса, где объявлен.
Начиная с PHP 7.1, модификаторы видимости можно применять и к константам класса (по умолчанию — public).
Пример, демонстрирующий область видимости:
class Example {
public $public = 'public';
protected $protected = 'protected';
private $private = 'private';
public function show() {
// Внутри класса доступны все свойства
echo $this->public; // OK
echo $this->protected; // OK
echo $this->private; // OK
}
}
class Child extends Example {
public function showChild() {
echo $this->public; // OK — public
echo $this->protected; // OK — protected доступен наследнику
// echo $this->private; // Fatal Error — private недоступен
}
}
$obj = new Example();
echo $obj->public; // OK — доступ извне
// echo $obj->protected; // Fatal Error
// echo $obj->private; // Fatal Error