在模块开发中何时使用包含(inc)文件


10

我想我了解.inc文件的结构差异(与.module相比),但是有人可以描述设计差异吗?我看到drupal示例模块使用hook_menu调用了.inc文件,或者我看到了调用.inc文件以进行函数定义。

  • 在什么情况下将代码放入.inc文件?是否遵守一些一般的设计准则?
  • 除了清楚为什么要使用一个(或多个).inc文件之外,还有其他好处吗?性能?版本控制?

谢谢!


1
在我看来,没有比这个问题的公认答案更好的解释了:)
Clive

3
就个人而言,如果我有一个支持多个URL或任何其他内容的Mod,我将使用.inc每个URL。我想只是组织,而不是将随机函数转储到一个大.module文件中。但是正如@Clive的帖子所引用的那样,它实际上只是个人观点或您的习惯。这里没有是非。
au_stan 2013年

1
确实,我已经使用modulename.preprocess.inc,modulename.node.inc,modulename.menu.inc等将大型模块分解为相关功能的合理块,但是从任何性能角度来看,唯一真正的理由是在开发之外使用它们如果您的模块具有一些相当大的功能,而这些功能很少被调用,那么您可能不希望组织此操作,因为您不希望您的php引擎在每次加载时进行解析。然后,您可以在需要时将它们引入,就像菜单回调包含的操作一样。
Jimajamma

为了值得,我将钩子实现和帮助器功能分组,并使用适当的命名约定(在CAPITALS中)将其文档块分类。因此,当我滚动浏览模块的代码时,可以看到不同功能组之间的分离。我查看了注释标准,看是否已经存在一个系统,但可以看到一个。
dbj44 2014年

Answers:


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加载的代码。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.