variable_get()の変数を設定するにはどうすればよいですか?


9

理解しようとしていますvariable_get()。これまで読んだところ、$conf配列を使用してsettings.phpに変数を設定し、後でコードを使用して変数を取得できますvariable_get()variable_get()データベースから値を取得するためにも使用できることを読みました。

これはどのように作動しますか?
自動的に作成されるテーブルはありますか?
この機能が可能な場合、どのように変数を設定しますか?

回答:


25

多分あなたは、variable_setがあらゆる種類の構造化データをデータベースに格納する魔法の方法であり、variable_getが再びそれを取得する方法であることを知りたいと思うかもしれません。残念ながら、そうではありません。

「永続変数」は、しばしば呼ばれるように、サイト管理者が値を変更するまで、リクエスト、ユーザー、セッションにわたって永続する必要がある比較的単純なキーと値のペアを意味します。良い例はサイト名です。

それはどのように機能するのでしょうか?

Drupalがブートストラップされると、すべての変数がキャッシュ(使用可能な場合)または変数テーブルから読み取られます。(正確なコードについては、variable_initializeを参照してください。)$conf変数は、巨大な配列であるグローバル変数に格納されます。Drupalがこれを行うのは、変数が必要になるたびにデータベースクエリを実行するよりも効率的だからです。(これは、variable_setがデータの大きなblobに適さない理由でもあります。リクエストごとにロードされます!)

を使用するvariable_get('variable_name', 'default_value')と、変数名は$ conf配列で検索されます。存在する場合、値が返されます。それ以外の場合は、デフォルト値が返されます。

最後に、ファミリーの3番目のメンバーであるvariable_delがあります。名前が示すように、これは変数テーブルから変数を削除します。この関数は、hook_uninstall実装でよく使用され、モジュールがアンインストールされるときに変数を削除します。

より複雑なカスタムデータ構造をデータベースに保存する方法を探している場合は、hook_schemadrupal_write_recordを確認するか、DrupalエンティティシステムとエンティティAPIを使用してください


7
もう1つの重要な注意事項はvariable_set()、変数キャッシュが再構築されることです。そのため、通常、管理設定などのように、永続的で一貫性のあるデータ用に予約されています。または、別の言い方をすると、ページのビルド中に変更される関数間で静的変数の代わりに、または静的変数のように使用しないでください。
ジマジャンマ2013年

5

Drushを使用している場合(強く推奨)、drush vget > variables.txtコマンドラインから発行して、現在のすべての変数とその値のリストを含むテキストファイルを作成できます。同様に、を使用drush vsetして、変数を別の値に変更できます。

、、およびその他の便利なコマンドの詳細についてvariable-getvariable-setGitHubを参照しください。


3

変数を設定するには、variable_set()を使用します。その後、variable_get()を使用してそれらを取得できます。Drupal APIサイトに慣れる必要があります。

変数は、保存されている場合、変数テーブルにあります。


上記の説明から、カスタムモジュールで変数を設定する方法は明らかではありません。では、カスタムモジュールから変数を設定する方法は?
Fawwad

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.