Wann werden Include (Inc) -Dateien in der Modulentwicklung verwendet?

10

Ich glaube, ich verstehe die strukturellen Unterschiede einer .inc-Datei (im Vergleich zu einem .module), aber könnte jemand die Designunterschiede beschreiben? Ich sehe Drupal-Beispielmodule, die eine .inc-Datei mit hook_menu aufrufen, oder ich sehe call .inc-Datei für Funktionsdefinitionen.

  • Unter welchen Umständen fügt man Code in eine .inc-Datei ein? Gibt es allgemeine Designrichtlinien, die einige einhalten?
  • Gibt es einen anderen Vorteil als die Klarheit, warum man eine (oder mehrere) .inc-Dateien verwenden würde? Performance? Versionierung?

Vielen Dank!

Joe
quelle
1
Sie können meiner Meinung nach keine bessere Erklärung als die akzeptierte Antwort auf diese Frage bekommen :)
Clive
3
persönlich, wenn ich einen Mod habe, der mehrere URLs oder was auch immer unterstützt, verwende ich eine .incpro URL. Ich denke, nur Organisation, anstatt zufällige Funktionen in eine große .moduleDatei zu kopieren. Aber wie @ Clives Beitrag verweist, ist es wirklich nur eine persönliche Meinung oder was Sie gewohnt sind. kein richtig oder falsch hier.
Au_stan
1
In der Tat habe ich modulename.preprocess.inc, modulename.node.inc, modulename.menu.inc usw. verwendet, um große Module in vernünftige Teile verwandter Funktionen aufzuteilen, aber der einzige wirkliche Grund unter Leistungsgesichtspunkten, sie außerhalb der Entwicklung zu verwenden Organisation ist wahrscheinlich, wenn Ihr Modul einige ziemlich große Funktionen hat, die selten aufgerufen werden, dass Sie nicht möchten, dass Ihre PHP-Engine jedes Mal analysiert, wenn sie geladen wird. Sie können sie dann bei Bedarf einspielen, ähnlich wie bei Menü-Rückrufen.
Jimajamma
Für das, was es wert ist, gruppiere ich meine Hook-Implementierungen und Hilfsfunktionen und kategorisiere ihre Dokumentblöcke unter Verwendung einer geeigneten Namenskonvention (in GROSSBUCHSTABEN). Wenn ich also durch den Code meines Moduls scrolle, sehe ich eine Trennung zwischen den verschiedenen Funktionsgruppen. Ich habe in den Kommentierungsstandards nachgesehen, ob es bereits ein System gibt, aber ich konnte eines sehen.
24ma13wg

Antworten:

12

In der Regel würde ich in die Moduldatei den Code einfügen, der häufiger benötigt wird (z. B. Hilfsfunktionen, die von mehr als einer Funktion verwendet werden), und in .inc-Dateien den Code, der nicht so oft verwendet wird oder der für bestimmte verwendet wird Seiten.

Seit Drupal 6 lädt der Code automatisch die Dateien, die die Seitenrückrufe enthalten, oder die Formularersteller, die für die Menüelemente verwendet werden. Aus diesem Grund werden Seitenrückrufe für Verwaltungsseiten normalerweise in .admin.inc-Dateien abgelegt, während Seitenrückrufe für .admin.inc-Dateien normale Seiten in .pages.inc-Dateien abgelegt werden.

Seit Drupal 7 werden Dateien mit Klassen automatisch geladen, wenn eine Klasse instanziiert wird. Mit Drupal 7 können Module definieren, in welchen Dateien ihre Hooks definiert sind (über hook_hook_info () ). Zum Beispiel system_hook_info () definiert die .tokens.inc Dateien als Dateien , in denen hook_token_info(), hook_token_info_alter(), hook_tokens(), und hook_tokens_alter()Implementierungen gefunden werden können; Auf diese Weise werden diese Dateien automatisch geladen, wenn einer dieser Hooks erforderlich ist.
Auf diese Weise können Sie den Code weiter in Dateien aufteilen, die bei Bedarf geladen werden, und in Code, der immer von Drupal geladen wird.

kiamlaluno
quelle