2012-08-23 6 views
8

代わりのPHP動的オブジェクトのプロパティの名前

$object->my_property 

が、私はそうのようなこの

$object->"my_".$variable 
+0

動的変数を使用することはできますが、明示的にすることが望ましいことがよくあります。後でリファクタリングを容易にします。 "my_cat"というプロパティーを検索したとしたら、それが動的に宣言されていれば見つからないでしょう。 – Revent

答えて

23

使用中括弧のような何かをしたい使用して:

$object->{'my_' . $variable} 
6

これはどう:

$object->{"my_$variable"}; 

PHPドキュメントのthis sectionが参考になると思います。つまり、任意の式を中括弧で書くことができます。その結果(文字列)は、対処すべきプロパティの名前になります。たとえば:

$x = new StdClass(); 
$x->s1 = 'def'; 

echo $x->{'s' . print("abc\n")}; 
// prints 
// abc 
// def 

...まだ通常(、ところで、意味のある名前を付けることができます)一時変数には、この式の結果を格納するためにはるかに読みやすいです。このように:あなたが見たよう

$x = new StdClass(); 
$x->s1 = 'def'; 

$someWeirdPropertyName = 's' . print("abc\n"); // becomes 's1'. 
echo $x->$someWeirdPropertyName; 

、このアプローチは、中括弧は必要ありませんになり、リーダーのプロパティ名を構成するもののうちの少なくともいくつか説明します。 )

P.S. printは、変数名の表現の潜在的な複雑さを示すためにのみ使用されています。この種のコードは認定試験でよく使用されますが、そのようなことを生産に使用することは大きな「ノー」です。 )

+0

ありがとう、私は2つのダニを与えることができればあなたも1つ持っています。 – user1209203

関連する問題