我想这样做:
<?php
define('X', 'attribute_name');
// object $thing is created with member attribute_name
echo $thing->X;
?>
尝试$thing->X
,PHP将X作为$ thing的属性,并忽略了这是一个define()'d令牌的事实(正确地说是这样)。考虑到这一点,我原本期望$thing->{X}
能够工作,但没有骰子。
我提出的唯一解决方案是使用中间人变量,如下所示:
$n = X;
echo $thing->$n;
但是这个额外的步骤看起来相当不具有PHP风格。关于更优雅的解决方案的任何建议?
答案 0 :(得分:4)
echo $thing->{X};
似乎对我有用。这是我的测试脚本:
define('FOO', 'test');
$a = new stdClass();
$a->test = 'bar';
echo $a->{FOO};
输出'bar'。