Drupal 获取当前模块名

Drupal 获取当前模块名,drupal,drupal-7,Drupal,Drupal 7,有没有办法获取您正在使用的模块的名称?我有一大组模块(大约35个),具有一些常见功能。长话短说,我希望能够获得模块名,而无需将其硬编码为字符串。希望这不是必须的,但我想知道我在尝试什么: function MYMODULE_mycustom_hook($args) { $sCurrModule = 'MYMODULE'; // Operations using $sCurrModule... } 本质上,我可以用模块名替换“MYMODULE”并完成它,但我想知道是否有一种方法

有没有办法获取您正在使用的模块的名称?我有一大组模块(大约35个),具有一些常见功能。长话短说,我希望能够获得模块名,而无需将其硬编码为字符串。希望这不是必须的,但我想知道我在尝试什么:

function MYMODULE_mycustom_hook($args) {
    $sCurrModule = 'MYMODULE';

    // Operations using $sCurrModule...
}
本质上,我可以用模块名替换“MYMODULE”并完成它,但我想知道是否有一种方法可以通过编程方式获得该值。我正在使用Drupal7


这不适用于Drupal 8。

如果您的模块文件是
sites/default/modules/MYMODULE/MYMODULE.module
,则模块名称是MYMODULE

您可以使用以下命令以编程方式在MYMODULE.module文件中获取它:

$module_name = basename(__FILE__, '.module');

虽然OP询问了D7,但Drupal 8(D8)的解决方案如下:

当然,如果需要,您可以链接这些调用:

\Drupal::service('module_handler')->getModule(basename(__FILE__, '.module'))->getName()

警告:如果代码在
.module
文件之外,这就不起作用了,这对于任何非平凡的功能来说都是如此。我也不明白为什么这个答案会被接受:关于D8.module文件经常被使用。如果你看一下标签,你会注意到这是针对Drupal 7的。它被标记为已接受的答案,因为它解决了我的问题。注意:
$module\u name
变量未命名为特定类或模块的名称空间,因此如果在多个模块中使用此变量,可能会得到意外的结果;对于我的实现,我从来没有在特定函数之外需要它,但是其他可能只是将它放在文件顶部的人可能会遇到麻烦。谢谢你,但问题不是关于Drupal 8的。@Lawrence Johnson,正如你可能看到的,我回答的第一句话就是承认你指出的事实:“虽然OP询问的是关于D7[…]”。我希望你不介意我尝试分享一段经验,希望对其他人有用。我认为这很好,我也对答案投了更高的票。但是,我认为将我的问题重新命名为Drupal 8并不好。
\Drupal::service('module_handler')->getModule(basename(__FILE__, '.module'))->getName()