Динамическое имя PHP для свойства объекта
вместо
$object->my_property
Я хочу сделать что-то подобное
$object->"my_".$variable
2 ответов
как насчет этого:
$object->{"my_$variable"};
Я думаю в этом разделе документации PHP может быть полезно. Короче говоря, можно написать любое произвольное выражение в фигурных скобках; его результат (строка) становится именем свойства, к которому нужно обратиться. Например:
$x = new StdClass();
$x->s1 = 'def';
echo $x->{'s' . print("abc\n")};
// prints
// abc
// def
... тем не менее, обычно гораздо более читабельно хранить результат этого выражения во временной переменной (которой, кстати, можно дать значимое имя). Вот так:
$x = new StdClass();
$x->s1 = 'def';
$someWeirdPropertyName = 's' . print("abc\n"); // becomes 's1'.
echo $x->$someWeirdPropertyName;
как вы смотрите, такой подход делает фигурные скобки ненужными и дает читателю хотя бы некоторое описание того, что составляет имя свойства. )
П. С. print
используется только для иллюстрации потенциальной сложности выражения имени переменной; в то время как этот вид кода обычно используется в сертификационных тестах, это большой "нет-нет", чтобы использовать такие вещи в производстве. )