drupal学习之-钩子
来源:互联网 发布:手机淘宝怎么上架宝贝 编辑:程序博客网 时间:2024/05/02 02:52
前 面说了, Drupal的逻辑层由一个核心框架和一系列的功能模块(Module,可以看成插件)构成, 框架与模块间的协调就是通过钩子机制来实现, 所以钩子机制是Drupal模块化系统的关键。什么是钩子机制, 它与面向对象的接口(Interface)类似, 就是为规范定义了两个实体间的功能界面, 使得实现了该界面的实体能进行交互. 在Drupal里, 钩子就是Drupal框架与模块间进行交互的接口, 但由于Drupal没有面向对象的机制, 所以它采用编程规约来讨巧地实现.
在Drupal里, 钩子就是一系列需要实现特定功能的函数, 它们约定好了输入参数和返回类型, 同时约定以xxx_yyy() 的形式来命名, 其中xxx是要实现功能的模块名称,而yyy则是具体的钩子名称 . 举个例子, 你就更清楚了. 例如我有个模块叫myexamplemodule, 现在我想在footer中添加一些Javascript代码, 于是我在我的模块代码中实现一个叫myexamplemodule_footer()的函数, 在此函数中我实现了我想要功能; 于是用户请求页面时, Drupal的框架会检测到我的模块有myexamplemodule_footer()函数, 并且它会自动调用它, 是不是很简单明了呢! Drupal核心框架的这种调度机制, 屏蔽了用户自定义模块与框架间的实际交互, 简化了的开发, 因为你只要实现一个函数即可, 别的事情系统已经替你完成了. 更多的hook请查看Drupal的文档库 .
Hook机制主要在模块管理(includes/module.inc )中实现, 主要有的四个主要函数, 非常简单.
下面看一下module_invoke_all()函数的具体实现, 该函数会在Bootstrap过程中被框架调用.
<?php
function module_invoke_all() {
$args =func_get_args();
$hook =$args[0];
unset($args[0]);
$return = array();
foreach (module_implements($hook) as$module) {
$function =$module .'_'.$hook;
$result =call_user_func_array($function,$args);
if (isset($result) &&is_array($result)) {
$return =array_merge_recursive($return,$result);
}
else if (isset($result)) {
$return[] =$result;
}
}
return $return;
}
?>
- drupal学习之-钩子
- Drupal 钩子概念
- Drupal自定义钩子
- drupal学习之-安装篇
- drupal学习之-目录结构
- Vue学习之 生命周期钩子
- drupal学习之-创建模块demo篇
- drupal中的钩子是干什么的
- Drupal钩子实现函数发现机制
- Drupal 模块的 Hooks(钩子)
- Drupal 模块的 Hooks(钩子)
- Drupal 模块的 Hooks(钩子)。
- Tomcat 学习进阶历程之关闭钩子
- Yaf学习笔记之钩子与插件
- vue学习基础之生命周期钩子
- 建设一个学习Drupal的网站----------之学习笔记
- 钩子学习
- drupal学习之-如何编写安全的代码
- [醒目]Spring入门Blog[十五、Spring中对于HibernateDaoSupport的封装][附带练习项目地址]
- 将软件项目中长期加班看做风险
- error C2731:"WinMain"无法重载函数
- CxImage的几种应用举例
- Android编译出现Multiple substitutions specified in non-positional format
- drupal学习之-钩子
- 道指令web操作系统
- 远程调用对比RMI、MINA、ESB、Burlap、Hessian、SOAP、EJB和JMS
- Linux操作系统下配置环境变量的三种方法
- grep用法详解:grep与正则表达式
- 让进程在后台可靠运行的几种方法
- 反调试技巧总结-原理和实现
- 6_25_天天向上
- 如何添加删除开机启动项