2012-01-10 22 views
2

屬性名稱我希望能夠設置一個對象的屬性,但會生成屬性名。我如何才能做到這一點在PHP中,不使用eval()設置一個對象的一個​​字符串的屬性在PHP

例如爲:

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

我希望能夠改變$attr_name

謝謝。

回答

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

這將完全實現。

注意的一點是,雖然,我會建議使用它連同property_exists()覈實財產的存在。

+2

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

1

有趣的是,你的代碼將發佈工作。 (++爲property_exists,雖然)

http://codepad.org/qW0Tj4MR

+0

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

1

我理解這個問題有一個有效的答案,而只是添加到許多方面,你可以這樣做:

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

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

相關問題