когда использовать файлы include (inc) при разработке модуля

10

Я думаю, что понимаю структурные различия файла .inc (по сравнению с .module), но может ли кто-нибудь описать различия в дизайне? Я вижу примеры модулей drupal, вызывающих файл .inc с hook_menu, или вижу файл вызова .inc для определения функций.

  • При каких обстоятельствах можно поместить код в файл .inc? Какие-нибудь общие руководящие принципы дизайна, которых придерживаются некоторые?
  • Есть ли какое-либо преимущество, кроме ясности относительно того, почему можно использовать (или несколько) файл .inc? производительность? управления версиями?

Спасибо!

Джо
источник
1
Вы не можете получить лучшего объяснения, чем принятый ответ на этот вопрос, по моему мнению :)
Клайв
3
лично, если у меня есть мод, который поддерживает несколько URL-адресов или что-то еще, я использую для .incкаждого URL. просто организация, я думаю, вместо того, чтобы сбрасывать случайные функции в один большой .moduleфайл. но как ссылки на пост @ Clive, это действительно просто личное мнение или то, к чему вы привыкли. не правильно или неправильно здесь.
au_stan
1
действительно, я использовал modulename.preprocess.inc, modulename.node.inc, modulename.menu.inc и т. д., чтобы разбить большие модули на разумные куски связанных функций, но единственная реальная причина с любой точки зрения производительности - использовать их вне разработки организация, вероятно, связана с тем, что в вашем модуле есть довольно большие функции, которые редко вызываются, и вы не хотите, чтобы ваш php-движок анализировал каждый раз при загрузке. затем вы можете вводить их по мере необходимости, как в случае с обратным вызовом меню.
Джимаджамма
Для чего я стою, я группирую свои реализации ловушек и вспомогательные функции и классифицирую их блоки документов, используя соответствующее соглашение об именах (в КАПИТАЛАХ). Поэтому, прокручивая код моего модуля, я вижу разделение между различными группами функциональности. Я посмотрел в стандартах комментирования, чтобы увидеть, существует ли система, но я смог ее увидеть.
dbj44

Ответы:

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()реализации могут быть найдены; таким образом, эти файлы автоматически загружаются, когда требуется один из этих хуков.
Это позволяет дополнительно разделить код на файлы, которые загружаются при необходимости, и код, который всегда загружается из Drupal.

киамлалуно
источник