Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/231.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/oop/2.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中使用字符串属性名设置对象的属性_Php_Oop_Reflection - Fatal编程技术网

在PHP中使用字符串属性名设置对象的属性

在PHP中使用字符串属性名设置对象的属性,php,oop,reflection,Php,Oop,Reflection,我希望能够设置对象的属性,但会生成属性名称。如果不使用eval() e、 g: $obj->name=“Prakash Raman”//作品 $obj->$attr_name=;//想让这样的事情发生吗 我希望能够更改$attr\u name 谢谢 $obj->{$attr_name} = "New value"; 这将完全实现这一点 不过,请注意,我建议您将其与一起使用,以验证该属性的存在。有趣的是,您发布的代码将起作用。(++for属性_存在。) 我知道这个问题有一个有效的答案,但

我希望能够设置对象的属性,但会生成属性名称。如果不使用
eval()

e、 g:

$obj->name=“Prakash Raman”//作品
$obj->$attr_name=;//想让这样的事情发生吗
我希望能够更改
$attr\u name

谢谢

$obj->{$attr_name} = "New value";
这将完全实现这一点


不过,请注意,我建议您将其与一起使用,以验证该属性的存在。

有趣的是,您发布的代码将起作用。(++for属性_存在。)


我知道这个问题有一个有效的答案,但我想补充一下您可以采用的多种方法:

<?php
$myClass = new ReflectionClass($someClass);
if($myClass->hasProperty($someProperty)){
   $myClass->getProperty($someProperty)->setValue($someClass,__NEW__VALUE__);
}
?>

<?php
$myClass = new ReflectionClass($someClass);
if($myClass->hasProperty($someProperty)){
   $myClass->getProperty($someProperty)->setValue($someClass,__NEW__VALUE__);
}
?>