Chinaunix
标题:
[模块] 有谁研究过drupal的模块化设计
[打印本页]
作者:
imbiss
时间:
2005-11-29 23:23
标题:
[模块] 有谁研究过drupal的模块化设计
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 编辑
]
作者:
wobushiwo
时间:
2005-11-29 23:56
刚看你的介绍,就有ood里的多态的感觉,你到哪里看一下 Polymorphism 部分
他里面是没有使用到php的 "class construct",不是说它不是面向对象,有很多原因
因为是建立在 php4 的基础上,php5可能要采用class结构(我一向认为php4的class结构太松散了,PHP5听说接近JAVA了,哈哈)
等等原因
它这种跟MVC并不冲突,hook是它的框架的实现方式
作者:
imbiss
时间:
2005-11-30 03:30
是啊。对于hook来实现框架一直没有明白。
比如aggregator是一个具体模块,aggregator_help()函数就是是核心hook_help()的一个具体实现,
而hook_help()的代码是在core.php的.具描述,他的作用是提供用户在线帮助。
从 hook_help() 影射为最终的 module_help() , 这样的运作到底如何实现的?
作者:
wobushiwo
时间:
2005-11-30 10:59
php的语法我不太了解,估计能解释出里面的函数或方法等或直接是以字符为参数调用函数的吧?
欢迎光临 Chinaunix (http://bbs.chinaunix.net/)
Powered by Discuz! X3.2