设置一个对象的一个​​字符串的属性在PHP

问题描述:

属性名称我希望能够设置一个对象的属性,但会生成属性名。我如何才能做到这一点在PHP中,不使用eval()设置一个对象的一个​​字符串的属性在PHP

例如为:

$obj->name = "Prakash Raman"; // Works 
$obj->$attr_name = <some value>; // Would want something like this to work 

我希望能够改变$attr_name

谢谢。

$obj->{$attr_name} = "New value"; 

这将完全实现。

注意的一点是,虽然,我会建议使用它连同property_exists()核实财产的存在。

+2

快速和简单。容易+1。 – 2012-01-10 20:29:35

有趣的是,你的代码将发布工作。 (++为property_exists,虽然)

http://codepad.org/qW0Tj4MR

+0

哇! :) 一点也不差 !谢谢。 – 2012-01-10 20:41:20

我理解这个问题有一个有效的答案,而只是添加到许多方面,你可以这样做:

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

哇。谢谢。 – 2012-01-11 12:30:18