从PHP中的对象中动态添加属性到基于Yii CComponent的对象?

时间:2014-07-07 11:02:17

标签: php yii

在PHP中,您可以执行以下操作:

$foo = new Foo();
$foo->$newPropertyName = $value;

动态地向对象添加新属性。但是,当我尝试这样做时:

$this->$newPropertyName = $value;

它不起作用。如何从对象中动态添加新属性?

更新:

我的类继承自Yii CFormModel类。 CFormModel会覆盖PHP __set方法,因此会导致问题。怎么做我想要的?如何使用默认的__set方法?

2 个答案:

答案 0 :(得分:1)

$this->newPropertyName = $value;

可以从内部中调用任何类的方法。在公共范围内就是这样:

$foo = new Foo();
$foo->newPropertyName = $value;

使用$this->时,您不会放置美元符号。

然而,您可以尝试强制php评估您的变量(如可以变化的)属性名称,然后将其分配给您的属性,如下所示:

$foo->{$newPropertyName} = $value;

答案 1 :(得分:0)

它可以动态运行,代码中必定存在错误(可能会拼写错误$newPropertyName)?

class Foo {

    public function addProperty($newPropertyName, $value) {
        $this->$newPropertyName = $value;
    }

}

$foo = new Foo();
$foo->addProperty('weather', 'raining');
echo $foo->weather;
相关问题