モジュール開発でインクルード(inc)ファイルを使用する場合


10

(.moduleと比較して).incファイルの構造の違いは理解していると思いますが、誰かが設計の違いを説明できますか?drupalのサンプルモジュールがhook_menuで.incファイルを呼び出しているのを見たり、関数の定義のために.incファイルを呼び出しているのを見たりします。

  • どのような状況で.incファイルにコードを挿入しますか?一部が遵守している一般的な設計ガイドラインはありますか?
  • (または複数の).incファイルを使用する理由について、明確さ以外の利点はありますか?パフォーマンス?バージョン管理?

ありがとう!


1
私の意見では、この質問に対する承認された回答よりも優れた説明は得られません:)
クライブ

3
個人的には、複数のURLなどをサポートするmodがある場合、URL .incごとに使用します。ランダムな関数を1つの大きな.moduleファイルにダンプするのではなく、ただ整理するだけです。しかし、@ Cliveの投稿の参照として、それは本当に個人的な意見またはあなたが慣れていることです。ここで正しいか間違っている。
au_stan 2013年

1
実際、私はmodulename.preprocess.inc、modulename.node.inc、modulename.menu.incなどを使用して、大きなモジュールを関連する関数の適切なチャンクに分割しましたが、パフォーマンスの観点から、開発以外で使用する唯一の本当の理由です。おそらく、モジュールに、めったに呼び出されないかなり大きな関数があり、ロードされるたびにphpエンジンに解析させたくない場合があります。次に、メニューコールバックインクルードでどのように処理されるかと同様に、必要なときにそれらを取り込むことができます。
ジマジャンマ2013年

フックの実装とヘルパー関数をグループ化し、適切な命名規則(CAPITALS)を使用してそれらのdocブロックを分類します。したがって、モジュールのコードをスクロールすると、機能の異なるグループ間の分離がわかります。コメント基準を調べて、システムが既に存在するかどうかを確認しましたが、システムは確認できました。
dbj44 2014

回答:


12

一般的なルールとして、私はモジュールファイルに頻繁に必要なコード(たとえば、複数の関数から使用されるヘルパー関数)を入れ、.incファイルにはそれほど頻繁に使用されないコード、または特定の目的で使用されるコードを挿入しますページ。

Drupal 6以降、コードはページコールバックを含むファイル、またはメニュー項目に使用されるフォームビルダーを自動的にロードします。そのため、管理ページのページコールバックは通常 .admin.incファイルに配置され、通常のページのページコールバックは.pages.incファイルに配置されます。

Drupal 7以降、クラスを含むファイルは、クラスがインスタンス化されるときに自動的にロードされます。Drupal 7では、モジュールがフックを定義するファイルを(hook_hook_info()を介して定義できます。例えば、system_hook_info()は、ここでファイルとして.tokens.incファイルを定義しhook_token_info()hook_token_info_alter()hook_tokens()、及びhook_tokens_alter()実装を求めることができます。このようにして、これらのフックの1つが必要なときに、これらのファイルが自動的にロードされます。
これにより、必要に応じて読み込まれるファイルと、常にDrupalから読み込まれるコードにコードをさらに分割できます。

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