2012-01-10 22 views
2

オブジェクトの属性を設定できるようにしたいが、属性名が生成されたい。どのように私はeval()PHPの文字列属性名を持つオブジェクトの属性を設定する

例えばを使用せずに、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が簡単。 –

1

偶然にも、投稿されたコードがうまくいくでしょう。 (。++ property_existsため、けれども)

http://codepad.org/qW0Tj4MR

+0

うわー! :) 悪くない、全く !ありがとう。 –

1

私は質問が有効な答えを持って理解し、ちょうどあなたがこれを行うことができます多くの方法に追加する:

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

うわー。しかし、ありがとう。 –

関連する問題