1

Drupal のコーディング規則について、ドキュメントやコードからは理解できなかった質問がいくつかあります。

Drupal のすべてのフックの名前を知る以外に、フックを実装する関数と、フックに少し機能を提供するだけの関数を区別する方法はありますか? コードまたは何らかの慣習によって強制されたものですか?

第二に、おそらく関連する質問です。コアモジュールを確認した後、一部の関数の名前が先頭にアンダースコアが付いていることに気付きました

function _node_rankings(SelectQueryExtender $query) {
    ...
}

アンダースコアにはどのような意味が付けられていますか? 「保護された」規則を模倣しているという私の仮定は、node.moduleファイル内の他の関数からのみ呼び出す必要があることを意味します。ただし、これを確認するものは何も見つかりませんでした。

Coding Standardsについては知っていますが、Drupal の内部システムを対象とした規則ではなく、一般的な PHP 構文を対象としているようです。

4

2 に答える 2

3

その通りです。関数名のアンダースコア プレフィックスは、それを宣言したモジュールによってのみ呼び出され、プライベート関数として扱われるべきであることを示しています。

これが Drupal の公式ドキュメントにあるかどうかはわかりませんが、drupal.org にこれを確認する投稿がいくつかあります ( thisまたはthisのように)。

編集: はい、「通常の」関数をフックの実装に変えることを避けるためにも機能します (ただし、既存のフックの後に関数に名前を付けないようにする必要があります)。

于 2011-02-21T02:05:45.213 に答える
2

最初の質問への回答として、ほとんどのモジュールのコードを見ると、フック実装の上のコメントは通常次のように述べています。

/**
 * Implementation of hook_foo().
 */

Drupal をしばらく使用すると、最も一般的なフックが認識されるようになります。

于 2011-02-21T18:57:49.683 に答える