カスタムモジュール変数名のベストプラクティスは?


8

私は自分のモジュールに対して非常に堅牢な構成ペインを実行する習慣に慣れてきました。変数の名前と管理がかなり面倒だと感じています。

のような変数がmymodule_section_subvar_varname_type_contextあり、変数名の要素の順序が分からないだけでなく、長い変数名を持っているのは設計上の欠陥のように感じます。

私はmymodule_section_settingsその配列の保守を容易にする一連の関数と組み合わせて変数でシリアル化された配列を使用することを検討してきましたが、(もしあれば)接頭辞および/またはまたは、私たちが信頼するモジュールの例と、それらが大きな変数のセットに対して何をしているのか。

ありがとう!


また、これについても更新を検討したいので(シリアル化された配列に傾いているのはそのためです)、変数名に変更を加えてもデータが孤立したり、アップグレードパスの機能やテストに追加の作業が追加されたりすることはありません
electblake

回答:


7

Drupal変数を使用して配列を含めることができます。これは、Drupalコアモジュールが行うことでもあります(book_type_is_allowed()を参照)。

単一のDrupal変数を使用して、モジュールで使用されるさまざまな設定を配列に含めることができます。form #tree属性を使用しても、system_settings_form()を使用して、追加のコードを記述せずに配列をDrupal変数に保存できます。コードのシリアル化解除は、Drupal変数を処理するDrupalコア関数によって自動的に行われます(variable_set()のコードを参照)。

次に問題は、単一のDrupal変数を使用して異なる設定を含める必要があるのはいつかということです。関数または関数のグループで使用される設定に単一の変数を使用します。配列に(たとえば)10個の異なる関数で使用される値が含まれているが、それらの関数がその配列の単一の値(またはいくつかの値)にアクセスする場合、設定に単一の永続変数を使用しません。


このタイプのシナリオがフィーチャーやストロングアーム内でどのように反応するか知っていますか?これらのモジュールと、それらのモジュールがもたらすモビリティを大切にするユーザーを締め出すのは嫌です。
electblake 2011年

Featuresが配列を含むDrupal変数で問題を起こす理由はわかりません。それが完全に真実であるかどうかにかかわらず、誰かが詳細を報告する可能性があります。
kiamlaluno

はい、私はこれがこの質問の範囲外の少しであるかもしれないことを理解します-しかし、この標準が誰にとっても機能することを確認したいのです:)私はいくつかのことを試した後に報告します。
electblake 2011年

2

一連の設定が関連している場合、それらを配列に配置することは理にかなっています。たとえば、をseveral variable_get順番に実行している場合。それはあなたにいくつかの柔軟性を与えるだけでなく、潜在的に少し速くなります。

ただし、これにより、他のプログラムがdrush vsetやstrongarmなどを使用して手動で設定を編集することが難しくなります。これらの場合、長い変数名が実際に役立ちます。

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