免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 2242 | 回复: 3
打印 上一主题 下一主题

[模块] 有谁研究过drupal的模块化设计 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2005-11-29 23:23 |只看该作者 |倒序浏览
drupal系统以他的众多模块而出名
他的模块化设计核心是hook钩子思想。和我们常说的MVC思路完全不同。
他在自己的页面上声称自己是不用class的面向对象的编程方法。

简要翻译一段关于钩子的说明
http://drupaldocs.org/api/head/f ... per/topics/oop.html
http://drupaldocs.org/api/head/function/aggregator_help
--------
钩子
--------
允许模块与核心互动
Drupal的模块系统是建立在"hook钩子"这个概念上的.一个钩子就是一个名字类似于foo_bar()的函数.这里,foo就是模块的名字,bar就是钩子的名字.每个钩子都有其设定参数和特殊的结果类型.

为了扩展drupal,只需要把模块实现为一个钩子.如果drupal允许模块来访问内核,它就会让哪个模块实现一个钩子,然后呼叫这个钩子来激活模块。
如果模块名example.module那么hook_help的具体实现的函数名就肯定是example_help()

用来决定哪个模块来实现钩子是在module_hook函数和module_implements函数决定的.位于module.inc
-------------------------
另外一段
钩子hook架构
钩子是界面抽象的基础。钩子定义了能被调用的方法或模块。如果模块实现了钩子,它的入口就是一个钩子,等待被呼叫。呼叫他的人不必知道具体实现的细节。
--------------------------

我不能理解,为什么不简单的使用OOP的继承呢??
有哪位高人能够解释一下他的运作办法。

[ 本帖最后由 HonestQiao 于 2005-11-30 11:47 编辑 ]

论坛徽章:
0
2 [报告]
发表于 2005-11-29 23:56 |只看该作者
刚看你的介绍,就有ood里的多态的感觉,你到哪里看一下 Polymorphism 部分

他里面是没有使用到php的 "class construct",不是说它不是面向对象,有很多原因

因为是建立在 php4 的基础上,php5可能要采用class结构(我一向认为php4的class结构太松散了,PHP5听说接近JAVA了,哈哈)

等等原因

它这种跟MVC并不冲突,hook是它的框架的实现方式

论坛徽章:
0
3 [报告]
发表于 2005-11-30 03:30 |只看该作者
是啊。对于hook来实现框架一直没有明白。

比如aggregator是一个具体模块,aggregator_help()函数就是是核心hook_help()的一个具体实现,
而hook_help()的代码是在core.php的.具描述,他的作用是提供用户在线帮助。

从 hook_help() 影射为最终的 module_help() , 这样的运作到底如何实现的?

论坛徽章:
0
4 [报告]
发表于 2005-11-30 10:59 |只看该作者
php的语法我不太了解,估计能解释出里面的函数或方法等或直接是以字符为参数调用函数的吧?
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP