2

私はこれをしたい:

<?php
define('X', 'attribute_name');
// object $thing is created with member attribute_name
echo $thing->X;
?>

しようとすると$thing->X、PHPはXを$ thingsのプロパティと見なし、それがdefine()されたトークンであるという事実を(当然のことながら)無視します。そのことを念頭に置いて、私は働くことを期待$thing->{X}していましたが、サイコロはありませんでした。

私が思いついた唯一の解決策は、次のように中間者変数を使用することです。

$n = X;
echo $thing->$n;

しかし、この余分な手順は、PHP風ではないようです。より優雅な解決策について何かアドバイスはありますか?

4

1 に答える 1

4
echo $thing->{X};

私のために働くようです。これが私のテストスクリプトです:

define('FOO', 'test');

$a = new stdClass();
$a->test = 'bar';

echo $a->{FOO};

'bar'を出力します。

于 2010-10-08T16:25:11.160 に答える