Извлечь объект как переменную из массива PHP (в модуле Drupal 7) - PullRequest
1 голос
/ 01 июня 2019

Надеюсь, я спрашиваю об этом так, чтобы это имело смысл. Не смог найти ничего, что ответило бы на это, хотя, возможно, я неправильно сформулировал свои условия поиска.

В моем пользовательском модуле Drupal 7 я могу успешно получить данные из массива таксономии, используя следующий синтаксис оператора объекта (стрелка ->)

$term = taxonomy_term_load($taxonomy_tid);
$description = $term->description;
echo $description;

Как сделать сам ярлык "описание" переменной? Настройка будет:

$term = taxonomy_term_load($taxonomy_tid);
$description_name_from_array = 'description';
$description = $term->????;
echo $description;

Вещи, которые не работают:

  • $term->$description_name_from_array
  • $term->[$description_name_from_array]
  • $term->&$description_name_from_array

1 Ответ

2 голосов
/ 01 июня 2019

фигурные скобки могут потребоваться в определенных случаях, но ваша первая попытка должна работать для доступа к описанию . Правильный синтаксис для доступа к свойству простой переменной из объекта:

 $obj->$property

Свойства класса также могут быть доступны с помощью имен переменных свойств. Имя свойства переменной будет разрешено в области видимости который вызов сделан. Например, если у вас есть такое выражение как $foo->$bar, то локальная область будет проверена на $bar и ее значение будет использоваться в качестве имени свойства $foo. Это тоже истина, если $bar - доступ к массиву.

Однако безопаснее заключить переменную в фигурные скобки, чтобы четко разграничить имя свойства:

$obj->{$property}

требуется , когда:

  • доступ к значениям в свойстве, которое содержит массив: $obj->${$properties[0]}
  • когда имя свойства состоит из нескольких частей: $obj->{$a . $b}
  • при использовании константы для доступа к свойству: $obj->{CONSTANT_NAME}
  • или когда имя свойства содержит символы, которые иначе не действительны

См. Переменные PHP Переменные

...