Получить доступ к свойству с помощью define () 'token? - PullRequest
2 голосов
/ 08 октября 2010

Я бы хотел сделать это:

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

При попытке $thing->X PHP принимает X за свойство $ thing и игнорирует тот факт (справедливо), что это токен define (). Имея это в виду, я ожидал, что $thing->{X} будет работать, но без кубиков.

Единственное решение, которое я придумал, это использовать переменную «человек посередине», вот так:

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

Но этот дополнительный шаг выглядит совершенно не по-PHP. Какой-нибудь совет относительно более изящного решения?

1 Ответ

4 голосов
/ 08 октября 2010
echo $thing->{X};

, кажется, работает для меня.Вот мой тестовый скрипт:

define('FOO', 'test');

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

echo $a->{FOO};

выводит 'bar'.

...