Drupal独到的编程思想

Drupal是时下非常流行的一个开源内容管理系统,它的流行除了开源的特性以外,还有个显著特征就是其独到的编程思想,正是开源社区共享的群体智慧,使得Drupal一直走在了开源CMS的前列。
'e/d)S.S/C8m8btech.techweb.com.cnDrupal是一款PHP核心的内容管理程序,使用MySQL或者PostSQL作为数据库引擎,以GPL授权协议方式发布。通过长达5年的发展,现在已远远超越了一个内容管理系统定义,对于一般用户,它是一个功能强大的内容管理系统,对于高级用户(本身具有PHP开发经验的用户),它还是一个功能强大的内容管理开发工具,同时也可以作为一个单/多用户的博客系统,同时其强大的主题管理与定制系统能让站点千变万化,拥有特色。毫无疑问,及高安全、快速度、易开发于一身的Drupal目前以是内容管理系统中的闪亮明星。
2p(B)B&j/F9|+x M7{Drupal本来是Dries Buytaert所写作的一个论坛程序,到现在它已经发展成为一个内容管理开发程序,内容管理系统和博客引擎,Drupal的一个最大特点就是非常灵活的编程结构,使用极为严格的PHP代码编写规范编写,这样能够很好的被升级、管理、扩展和二次开发。目前有很多著名的站点在使用Drupal作为内容管理系统,比如Debian Palanet、Spread Firefox、NASA(美国宇航局)等。
0s5t$u,|/w2w:J4X,J9[tech.techweb.com.cnDrupal没有使用许多PHP的OOP(面向对象编程)特性,但是却使用了非常多的OOP结构,比如Objective-C的“categories”,然而这些都是PHP缺少的一些OOP结构。
(i-Z$}/~*H5z在Drupal中有许多结构符合“对象”的描述。Drupal组成部分中可认为是对象的、最突出的一些有模块、主题、节点(Nodes)和用户(Users)。 *i*Q!z;C0X)[5o2A8E4?'w4I
节点是一个Drupal站点的基本内容构件,即一些数据捆绑在一起构成一个典型站点的“页面”。操作这一对象的方法定义在node.module,通常由node_invoke()调用。表现用户的user对象同样将数据包装在一起,包括用户的账户信息、个人信息、和会话跟踪。在这两种情形下,数据结构都被定义在数据库表中而不是在类中。Drupal使用它支持的数据库的关系特性,使其他模块可以扩展对象,如增加额外的数据域值。 !U1T8i1x#R(p
节点也是传统意义上的多态。如果一个模块需要显示一个节点,例如,它可以对节点调用node_view()得到节点的html表示。然而,实际的html生成过程完全取决于传递给函数的节点类型;这个和有一个类按照接收到的消息类型决定自己的行为是直接类似的。Drupal自身负责处理这种通常由OOP语言运行库处理的内部任务。
F&w;A2[$I&I2ATechWeb-技术社区此外,这个例子中节点的HTML生成也受当前活动的主题的影响。主题也象node的方式一样是多态的;主题接收到“表现这个节点”的消息,然后按当前活动的主题定义的方式响应,虽然接口是固定的,但各个主题间的“表现”方式可能完全不同。
-P8~5W!v-r程序开发,操作系统,服务器,源码下载,Linux,Unix,BSD,PHP,Apach,asp,下载,源码,黑客,安全,技术社区,技术论坛模块和主题同样也具有“对象”特性,在很多情况下充当“controller”的角色。每个模块都有一个源文件,不但捆绑了一系列相关的函数,同时也遵从已定义的Drupal Hook(调用-钩子)的模式。
(g,v5z9`9j&mTechWeb-技术社区模块和主题可以任意定义它们需要的功能。然而,它们都会考虑从基本的抽象类中继承它们的行为。在主题中,这个基类是由theme.inc文件中的函数定义的;如果一个主题没有重载其中的函数,即使主题提供了替代的“表现”函数,显示时也会使用缺省的“表现”函数。模块的情况也是完全类似的,Drupal有很多hook可供选择,模块可以选择一些来实现。 :L!A:a8a%n!n
此外,Drupal的Hook系统是它的界面抽象层的基础。Hook定义那些调用模块或由模块调用的操作。如果一个模块实现一个Hook,就是当hook被调用时按约定执行一定的功能。调用代码不用了解模块的任何信息或者被调用时hook是怎样被实现的。
,S4c"p.F6`0T7u6LDrupal内部结构中的大多数都比简单的继承和消息传递来得复杂,然而,系统中最让人感兴趣的特性还是使用已有的软件设计模式获得的。例如,许多在经典的四人帮《设计模式》中描述的模式都可以在Drupal中看到。 TechWeb-技术社区*X'M;I"g8v
在飞速发展的互联网上,Drupal一直走在内容管理系统与开发的最前列,因为它有自己的活跃社区,有着顽强的生命力;随着Web 2.0时代的发展,Drupal也会不断的升级和创新,如同一个生命周期一般,可以说Drupal才刚刚出生,但正是这个刚刚出生的小生命却给了人们巨大的震撼与无限的希望。随着越来越多开发者和用户的增加,Drupal的发展将会更快更稳。

你可能感兴趣的:(设计模式,编程,PHP,数据库,oop,hook)