|
作为全球最大维基百科(wikipedia)的为项目实践基础的开源程序mediawiki,历经多年开发,其中的一些模式值得学习。
一、全局对象
mediawiki定义了几个得要的全局对象,可以全局调用。
* $wgOut - OutputPage object for HTTP response.
* $wgUser - User object for the user associated with the current request.
* $wgTitle - Title object created from the request URL.
* $wgLang - Language object selected by user preferences
* $wgContLang - Language object associated with the wiki being viewed.
* $wgArticle - Article object corresponding to $wgTitle.
* $wgMessageCache - Message cache to manage interface messages
* $wgRequest - WebRequest object, to get request data
* $wgParser - Parser object. Parser extensions register their hooks here.
* $wgLoadBalancer - LoadBalancer object, manages database connections.
* $mediaWiki - MediaWiki object, the main base class for the MediaWiki software. Initializes the $wgTitle and $wgArticle objects, and executes the URL actions.
二、多语言与本地化
程序完全实现了多语言本地化,从而实现了全球化,任何用户只要选择自已的语言选项,就可以自由使用,这其中,多语言机制功不可末。
三、扩展开发----TAG
这其本上是一种解析标签,你可以自定义解析标签,它将在显示时被解析-parser.
可以理解为这是一种解析函数,可以放在编辑中的任何地方。文章显示时,它被解析,保存时同样会被钗子进行处理。
四、扩展开发------钩子。
钩子阿以理解为一事件机制,相当于是事件,用户可以为这个事件添加函数。至于如何具体事实,以后再论述。
五、扩展开发-------special page(插件开发)
这个相当于插件开发了。使用全局对象,进行插件开发。
六、扩展开发------Skin customer
用户可以扩展skin类,从面完全实现自定义的 skin,从而实现完全的custom Layout。
当然,meiawiki也有不好的地方,就是类太复了。作为轻量,高效的开发理念,复杂的类定义,对于架构理解和二次开发来说,有一定的难度。
|
|