Допустим, у меня есть класс, который выглядит так:
class UserModel {
private $_userData;
function __construct($user_data){
$this->_userData = $user_data;
}
}
Который называется так:
$user = json_decode('{"name":"Neal","surname":"MyLastName"}');
$the_user = new UserModel($user);
Я не хочу, чтобы каждый раз, когда я хочу получать имя пользователя, необходимо сделать $ this -> _ userData-> name
внутри класса.
Можно ли установить значение по умолчанию для имени и фамилии и создать __ get ()
работают так:
class UserModel {
private $_userData;
private $name = 'default';
private $surname = 'default';
function __construct($user_data){
$this->_userData = $user_data;
}
function __get($var){
if(isset($this->_userData->$var))return $this->_userData->$var; // new storage
if(isset($this->$var))return $this->$var; // old storage
return null; // the default (could be a throw new Exception() instead)
}
}
Вот демонстрация того, что я пытаюсь сделать: http://codepad.viper-7.com/cuS9Lx