Значения по умолчанию для переменных класса

Допустим, у меня есть класс, который выглядит так:

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

5
задан Naftali aka Neal 24 June 2011 в 15:05
поделиться