php – Drupal的模块挂钩呼叫在哪里开始?
作者:互联网
在Drupal 7(和Drupal 6?)系统中,什么“开始”钩子调用过程,或“顶级”钩子调用位于何处?
正如我目前了解Drupal模块系统,任何模块都能够为另一个模块创建一个钩子来实现.这意味着Drupal的大部分执行都是为其他模块实现钩子的模块,这反过来又为其他模块提供了钩子来实现.
我不清楚的是,是否有一个初始的顶级钩子在引导程序中调用以启动此过程,或者是否有几个非模块调用启动钩子调用过程,或其他什么(道歉)这是模糊和新的,但就像我说我不明白)
我查看了_drupal_bootstrap_full函数,最后有一个很有希望
module_invoke_all('init');
但是,我对modules /文件夹的搜索只显示了一个“init”钩子函数,这似乎不是一个启动点
system/system.api.php
1737:function hook_init() {
function hook_init() {
drupal_add_css(drupal_get_path('module', 'book') . '/book.css');
}
所以,那对我来说,模块系统之外的东西会把这一切都搞砸.这是发生在一个地方,还是多个地方.这些地方在哪里?
我目前不是一个沉重的Drupal用户.我所有这一切的最终目标是孤立地理解Drupal的模块系统,这样我就可以调查并理解Drupal如何使用它的模块构建大多数人认为是Drupal的应用程序.欢迎任何/所有解释,但我试图从架构的角度理解事物.我知道你不需要这些知识来使用Drupal,但是我的大脑已经坏了,在我知道基本的PHP代码在做什么之前我不会让我前进.
解决方法:
钩子系统是Drupal内部的一个独立系统.它不负责引导. hook_init()只是在引导过程结束时调用的钩子.正如另一个答案所说,module_invoke_all()可以在进程中随时随地调用.
简而言之,在Drupal 7中,index.php中的以下两行负责请求的基本流程:
<?php
drupal_bootstrap(DRUPAL_BOOTSTRAP_FULL);
menu_execute_active_handler();
?>
哪个可以翻译成两个步骤:
>引导系统.这包括加载所有模块和必要的包含文件,数据库连接等.
>查找负责此请求的菜单路由器项并执行它.
有人开始发布一系列博客文章来详细描述它,见http://becircle.com/blog_topics/line_line.
标签:php,drupal,drupal-modules,drupal-hooks 来源: https://codeday.me/bug/20190621/1255956.html