Les Valeurs par défaut pour les Variables de Classe

Disons que j'ai une classe qui ressemble à ceci:

class UserModel {
    private $_userData;
    function __construct($user_data){
          $this->_userData = $user_data;
    }
}

Qui est appelé comme ceci:

$user = json_decode('{"name":"Neal","surname":"MyLastName"}'); 
$the_user = new UserModel($user);

Je ne veux pas, de sorte que chaque fois que je veux obtenir le nom de l'utilisateur d'avoir à faire $this->_userData->name à l'intérieur de la classe.

Est-ce ok si je mets une valeur par défaut pour le nom et le prénom, et chreate un __get() fonction de la façon:

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)
    }
}

Voici une démo de ce que je suis en train de faire: http://codepad.viper-7.com/cuS9Lx

Je ne suis pas sûr de voir ce que la question est vraiment? Il n'y a rien de mal à ce que ce que vous faites, et si cela convient à vos besoins le faire. Vous l'esprit, vous pourriez vouloir utiliser protected pas private variables.
Remarque: Quand il s'agit de la performance, il serait intéressant de savoir combien de temps il faut pour faire les différents isset()'s ci-dessus.

OriginalL'auteur Neal | 2011-06-24