使用define()'d令牌访问属性?

时间:2010-10-08 16:20:52

标签: php class oop member

我想这样做:

<?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风格。关于更优雅的解决方案的任何建议?

1 个答案:

答案 0 :(得分:4)

echo $thing->{X};

似乎对我有用。这是我的测试脚本:

define('FOO', 'test');

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

echo $a->{FOO};

输出'bar'。