私はこれをしたい:
<?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風ではないようです。より優雅な解決策について何かアドバイスはありますか?