在对象的方法中,如何从给定的参数创建一个属性?
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;
还有可能将此属性设置为public/protected/private吗?我知道在这种情况下应该是public,但是我可能希望添加一些魔法方法来获取受保护的属性等等 :)
我认为我找到了解决方案:
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];
}
你认为这是一个好主意吗?
$this->{$name} = $value;
,对吗? - Victor$this->{$name}
而不是$this->name
,因为$this->name
只会创建一个名为“name”的属性。 - ismnoiet