Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/269.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在PHP中,从对象内部向基于Yii CComponent的对象动态添加属性?_Php_Yii - Fatal编程技术网

在PHP中,从对象内部向基于Yii CComponent的对象动态添加属性?

在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方法?它是动态工作的,您的代码中一定

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

$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;