Показывает ли функция get defined vars() переменные, определенные в наборе переменных()?


Я использую Drupal 6, и у меня возникли проблемы с получением набора переменных, которые я задал с помощью variable_set(), используя variable_get(). Я делаю dpr(get_defined_vars()), чтобы увидеть, что определено, и я не вижу своих переменных; Я вижу только массивы $form и $form_state (это внутри hook_submit()).

Показывает ли get_defined_vars() все переменные, определенные с помощью variable_get()/variable_set()? Я просто хотел бы увидеть список всех из них. Мне просто нужно проверить, правильно ли они установлены, и устранить причину, по которой я не могу их восстановить.

Author: kiamlaluno, 2011-06-30

2 answers

Get_defined_vars - это функция PHP, а не функция Drupal. Он в основном показывает вам все переменные, которые находятся в области видимости.

Переменные Drupal, заданные набором переменных, автоматически не попадают в область действия.

Переменные хранятся в global $conf;, но я не помню, хранятся ли здесь также не переменные.

Если вы установите модуль разработки, появится страница для просмотра и редактирования переменных.

ИЗМЕНИТЬ:

Любопытство овладело мной. Переменная редактор в модуле разработки запрашивает таблицу {variable}, а не global $conf;, чтобы построить форму всех доступных переменных, поэтому это предполагает, что это правильный способ сделать это.

 6
Author: mpdonadio, 2011-06-30 15:05:04

То, что вы задаете с помощью variable_set(), называется "переменными Drupal" или "постоянными переменными". Они не являются переменными PHP, и get_defined_vars() не возвращает их.

Во время начальной загрузки содержимое таблицы "переменные" копируется в глобальную переменную $conf, которая также содержит значения, установленные в settings.php, например, переопределяет строку.

$conf['locale_custom_strings_en'] = array(
  'forum'      => 'Discussion board',
  '@count min' => '@count minutes',
);

Если вы хотите проверить, какие переменные Drupal установлены, то вы можете использовать глобальную переменную $conf, но я бы предложил сделать это только для в целях отладки, а не в коде, который вы публично распространяете или используете за пределами тестового сайта.

 1
Author: kiamlaluno, 2011-06-30 19:37:40