Показывает ли функция 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()
? Я просто хотел бы увидеть список всех из них. Мне просто нужно проверить, правильно ли они установлены, и устранить причину, по которой я не могу их восстановить.
2 answers
Get_defined_vars - это функция PHP, а не функция Drupal. Он в основном показывает вам все переменные, которые находятся в области видимости.
Переменные Drupal, заданные набором переменных, автоматически не попадают в область действия.
Переменные хранятся в global $conf;
, но я не помню, хранятся ли здесь также не переменные.
Если вы установите модуль разработки, появится страница для просмотра и редактирования переменных.
ИЗМЕНИТЬ:
Любопытство овладело мной. Переменная редактор в модуле разработки запрашивает таблицу {variable}
, а не global $conf;
, чтобы построить форму всех доступных переменных, поэтому это предполагает, что это правильный способ сделать это.
То, что вы задаете с помощью 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
, но я бы предложил сделать это только для в целях отладки, а не в коде, который вы публично распространяете или используете за пределами тестового сайта.