1

我有几个关于 Drupal 编码约定的问题,我无法从文档或代码中了解到这些问题。

除了知道 Drupal 中每个钩子的名称之外,有没有办法区分实现钩子的函数和只为钩子提供一点功能的函数?通过代码或某种约定强制执行的东西?

第二,可能相关的问题。在查看了核心模块后,我注意到一些函数的命名带有前导下划线

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

下划线是什么意思?我的假设是模仿“受保护”约定,这意味着它只能从node.module文件中的其他函数调用;但是,我找不到任何东西来证实这一点。

我知道编码标准,但它们似乎针对的是一般的 PHP 语法,而不是针对 Drupal 内部系统的约定。

4

2 回答 2

3

没错,函数名中的下划线前缀表示它应该被视为私有函数,只能由声明它的模块调用。

我不知道这是否在 Drupal 的官方文档中,但 drupal.org 上有一些帖子证实了这一点(如thisthis)。

编辑:是的,它还可以避免将“普通”函数转换为钩子实现(尽管您应该尽量不在现有钩子之后命名函数)。

于 2011-02-21T02:05:45.213 回答
2

在回答您的第一个问题时,如果您查看大多数模块的代码,则挂钩实现上方的注释通常会说:

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

在使用 Drupal 一段时间后,您将开始认识最常见的钩子。

于 2011-02-21T18:57:49.683 回答