Как я могу создать свойство из заданного аргумента внутри метода объекта?
class Foo{
public function createProperty($var_name, $val){
// here how can I create a property named "$var_name"
// that takes $val as value?
}
}
И я хочу иметь доступ к собственности как:
$object = new Foo();
$object->createProperty('hello', 'Hiiiiiiiiiiiiiiii');
echo $object->hello;
Также возможно ли, чтобы я мог сделать собственность общедоступной / защищенной / частной? Я знаю, что в этом случае он должен быть публичным, но я могу добавить несколько магических методов, чтобы получить защищенные свойства и прочее:)
Я думаю, что нашел решение:
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];
}
Как вы думаете, это хорошая идея?