web-dev-qa-db-ja.com

get_defined_vars()は、variable_set()で定義された変数を表示しますか?

Drupal 6を使用していますが、variable_set()を使用してvariable_get()で設定した変数のセットを取得する際に問題が発生しています。 dpr(get_defined_vars())を使用して定義を確認しますが、変数は表示されません。配列_$form_および_$form_state_のみが表示されます(これはhook_submit()内にあります) 。

get_defined_vars()は、variable_get()/variable_set()を介して定義されたすべての変数を表示しますか?それらすべてのリストをご覧ください。それらが正しく設定されているかどうかを確認し、それらを取得できない理由をトラブルシューティングするだけです。

4
user1359

get_defined_vars はPHP関数であり、Drupal関数ではありません。基本的に、スコープ内のすべての変数を表示します。

variable_set によって設定されたDrupal変数は、自動的にスコープ内にありません。

変数はglobal $conf;に格納されていますが、非変数もここに格納されているかどうかは覚えていません。

Devel Module をインストールすると、変数を表示および編集するためのページがあります。

編集:

好奇心が湧きました。 Develモジュールの変数エディターは{variable}ではなくglobal $conf;テーブルにクエリを実行して、使用可能なすべての変数のフォームを構築します。これにより、それが適切な方法であることが示唆されます。

6
mpdonadio

variable_set()で設定するものは、「Drupal変数」または「永続変数」と呼ばれます。 PHP=変数ではなく、get_defined_vars()はそれらを返しません。

ブートストラップ中に、「variables」テーブルの内容がグローバル変数$confにコピーされます。これには、文字列のオーバーライドなど、settings.phpで設定された値も含まれます。

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

Drupal変数が設定されていることを確認したい場合は、グローバル変数$confを使用できますが、デバッグ目的でのみ使用することをお勧めします。テストサイト外で公に配布または使用する。

1
kiamlaluno