Прежде всего PHP ищет имя свойства в определении класса и пытается вернуть его значение. Если свойства нет - PHP пытается вызвать __get ($ var), и здесь вы можете вернуть все, что захотите. Это немного сбивает с толку поведение тех, кто знает Java-подобные методы получения / установки, где вы должны определить их для каждого члена класса, к которому вы хотите получить доступ.
Когда удобно использовать Java-подобные методы получения / установки - вы можете написать что-то вроде этого:
public function __set($var, $value)
{
if (method_exists($this, $method = "_set_" . $var))
{
call_user_func(array($this, $method), $value);
}
}
public function __get($var)
{
if (method_exists($this, $method = "_get_" . $var))
{
return call_user_func(array($this, $method), $value);
}
}
, а затем используйте этот код, определив пользовательские методы получения / установки
protected function _get_myValue()
{
return $this->_myValue;
}
protected function _set_myValue($value)
{
$this->_myValue = $value;
}
и доступ к определенным методам следующим образом:
$obj->myValue = 'Hello world!';