在PHP中,从对象内部向基于Yii CComponent的对象动态添加属性?
在PHP中,您可以执行以下操作:在PHP中,从对象内部向基于Yii CComponent的对象动态添加属性?,php,yii,Php,Yii,在PHP中,您可以执行以下操作: $foo = new Foo(); $foo->$newPropertyName = $value; 向对象动态添加新属性。但是,当我尝试这样做时: $this->$newPropertyName = $value; 它不起作用。如何从对象中动态添加新属性 更新: 我的类继承自Yii CFormModel类。CFormModel重写PHP\uu set方法,因此会导致问题。我想怎么做?如何使用默认的\u set方法?它是动态工作的,您的代码中一定
$foo = new Foo();
$foo->$newPropertyName = $value;
向对象动态添加新属性。但是,当我尝试这样做时:
$this->$newPropertyName = $value;
它不起作用。如何从对象中动态添加新属性
更新:
我的类继承自Yii CFormModel类。CFormModel重写PHP
\uu set
方法,因此会导致问题。我想怎么做?如何使用默认的\u set
方法?它是动态工作的,您的代码中一定有一个错误(可能是错误销售$newPropertyName
)
可以从类的任何方法内部调用。在公共范围内是这样的:
$foo = new Foo();
$foo->newPropertyName = $value;
当使用$this->
时,您不会使用美元符号
但是,您可以尝试强制php在将变量(如can vary)属性名称分配给属性之前对其求值,如下所示:
$foo->{$newPropertyName} = $value;
$foo->newPropertyName=$value@user3234352-需要美元,因为新的属性名来自variableIt't's not胡说八道$newPropretyName是一个保存新属性名的变量。我不想创建属性
newPropertyName
。开发人员不知道属性名称。它将来自数据库。嗯,我刚刚得到“Property Foo.xxx not defined”错误。我的PHP v。是5.4.16,所以应该不会有问题。啊,我想这可能是因为PHP magic uuu set和uuu get方法被基类覆盖了。这让事情变得更复杂。。。基类是yiicformmodel。
$foo = new Foo();
$foo->newPropertyName = $value;
$foo->{$newPropertyName} = $value;