2

我想这样做:

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

尝试$thing->X,PHP 将 X 视为 $thing 的属性,并忽略了事实(正确地)它是一个定义()的标记。考虑到这一点,我曾期望$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};

输出“酒吧”。

于 2010-10-08T16:25:11.160 回答