Comment puis-je créer une propriété à partir d'un argument donné à l'intérieur d'une méthode d'un objet ?
class Foo{
public function createProperty($var_name, $val){
// here how can I create a property named "$var_name"
// that takes $val as value?
}
}
Et je veux pouvoir accéder à la propriété comme :
$object = new Foo();
$object->createProperty('hello', 'Hiiiiiiiiiiiiiiii');
echo $object->hello;
Est-il également possible de rendre la propriété publique/protégée/privée ? Je sais que dans ce cas, elle devrait être publique, mais je pourrais vouloir ajouter quelques méthodes magiques pour obtenir des propriétés protégées et autres :)
Je pense avoir trouvé une solution :
protected $user_properties = array();
public function createProperty($var_name, $val){
$this->user_properties[$var_name] = $val;
}
public function __get($name){
if(isset($this->user_properties[$name])
return $this->user_properties[$name];
}
pensez-vous que c'est une bonne idée ?