# Магический метод get

Следующий магический метод, который мы с вами разберем, называется `__get`. Этот метод срабатывает при попытке прочитать значение приватного или защищенного свойства.

Если реализовать метод `__get` в каком-нибудь классе, то все обращения к несуществующим или скрытым свойствам будут обрабатываться этим методом.

При этом PHP автоматически будет передавать имя запрошенного свойства в первый параметр этого метода, а возвращаемое этим методом значение будет воспринято как значение свойства, к которому произошло обращение.

Скорее всего пока не очень понятно, как это работает, поэтому давайте посмотрим на практическом примере. Пусть у нас есть вот такой класс `Test` с приватным и публичным свойствами:

`<?php class Test { public $prop1 = 1; // публичное свойство private $prop2 = 2; // приватное свойство } ?>`

Давайте добавим в наш класс магический метод `__get`, который для начала будет просто возвращать имя свойства, к которому произошло обращение:

`<?php class Test { public $prop1 = 1; private $prop2 = 2; public function __get($property) { return $property; // просто вернем имя свойства } } ?>`

Давайте проверим работу созданного магического метода. Обратимся к трем типам свойств: к публичному свойству, к приватному и к несуществующему:

`<?php $test = new Test; // Обращаемся к публичному свойству: echo $test->prop1; // выведет 1 - то есть значение свойства // Обращаемся к приватному свойству: echo $test->prop2; // выведет 'prop2' - имя свойства // Обращаемся к несуществующему свойству: echo $test->prop3; // выведет 'prop3' - имя свойства ?>`

Как вы видите, наш магический метод реагирует на обращение к приватным и несуществующим свойствам, но игнорирует обращение к публичным - они работают так, как и работали раньше.

← →
↑