《Moodle的研究和开发理论.doc》由会员分享,可在线阅读,更多相关《Moodle的研究和开发理论.doc(47页珍藏版)》请在三一办公上搜索。
1、本 科 毕 业(设计)论 文 题 目: Moodle的研究和开发理论 分院系部: 计算机与信息科学系 专 业: 计算机科学与技术 姓 名: 导师姓名: 导师职称: 二一一 年 六 月基于Moodle下课程展示平台的设计与开发 摘 要:信息化学习的不断发展促进了网络课程管理系统的发展。Moodle就是伴随着网络教育的出现而发展起来的一个教学管理系统,Moodle 作为一个著名的开源课程管理系统被全球的教育机构使用着。论文分析了 Moodle 的基本构架和可行的二次开发和设计的形式, 并利用PHP技术对课程展示平台进行设计与开发。论文首先简要介绍了Moodle教学平台的搭建方法、结构及平台建设注意
2、事项;然后详细介绍了Moodle主题风格的体系结构及如何自定义个性化的主题风格,论文对此进行了详细介绍。关键词:信息化学习; 课程管理系统; Moodle;PHP技术;教学平台;主题风格Design and Development of Course Display Platform Based on Moodle Abstract: The continuous development of information technology to promote learning of the network management system development program. Mood
3、le is accompanied by the emergence of online education and developed a learning management system, Moodle, as a well-known open source course management system is used with educational institutions around the world. Moodle paper analyzes the basic framework and viable form of secondary development a
4、nd design, and using PHP technology demonstration platform for the curriculum design and development. Paper first introduces the Platform for Moodle teaching methods, structure and platform considerations; and then details the architecture of Moodle theme style and how to customize the theme of pers
5、onal style, the paper describes this in detail.Keywords: Information technology learning; Course management system; Moodle; PHP technology; Teaching platform; Theme style目 录1引言12Moodle概述22.1Moodle概述22.2Moodle的发展历程22.3Moodle的特点32.3.1先进的教学理念32.3.2功能强大32.3.3易于操作42.3.4模块化的结构设计42.3.5支持多种语言42.3.6开放源代码43Mo
6、odle结构分析63.1Moodle的系统架构63.2Moodle的课程活动模块73.2.1作业(Assignment)模块73.2.2选项(Choice)模块83.2.3讨论区(Forum)模块83.2.4日志(Journal)模块83.2.5资源(Resource)模块83.2.6测试(Quiz)模块83.2.7调查(Survey)模块93.2.8聊天室(Chat)模块93.2.9工作坊(Workshop)模块93.3Moodle的主要功能93.3.1管理员功能93.3.2教师功能103.3.3学生功能103.4模块化构架分析113.5Moodle数据库模型114Moodle的二次开发理论
7、134.1Moodle二次开发的形式134.2Moodle二次开发的准备134.2.1开发环境和工具134.2.2熟悉目录结构144.2.3总体开发约定154.3Moodle二次开发指南154.3.1通用规则154.3.2编码风格164.3.3数据库结构204.3.4安全问题225课程展示平台的设计与开发245.1Moodle平台的安装245.2创建课程255.2.1用户注册265.2.2课程设置265.2.3板块设置265.2.4创建和引用资源275.2.5活动使用275.3Theme的设计开发285.3.1了解Theme结构和开发约定285.3.2了解主题风格的目录文件305.3.3开发方
8、法316结论32参考文献33指导教师简介34致 谢35附 录361 引言在实现计算机运用和信息网络化的今天,效率的大幅提高以及信息交换的深入和扩大人类的生活越来越离不开数字化、信息化。信息决定着我们的生存。以多媒体计算机技术和网络通讯技术为主要标志的信息技术,对当代社会产生着重大的影响,改变着我们的工作方式、学习方式和生活方式。信息技术在教育领域的运用是导致教育领域彻底变革的决定性因素,它必将导致教学内容、手段、方法、模式甚至教学思想、观念、理论以及体制的根本变革。 网络教育是随着信息技术的发展而发展的。现代教育技术的广泛应用,使得网络教育具有社会和教育意义上的极大优势:教育信息的及时传递,网
9、络教育资源的最充分共享和更有效利用;实时和非实时地任意交流、讨论;学生自主学习、个性化学习及协作学习;教学空间的无限扩展,教育对象的空前膨胀;虚拟技术模拟现实,解决教学难题;促使教育社会化,使教育从学校走向社会与家庭;促进终生教育和全民教育的开展等等。随着信息社会、知识经济的到来,社会对教育有着极大的需求,而目前传统教育由于规模有限、教育资源分配不均、时间、空间固定等原因还远远不能满足社会发展的需要;网络教育的优势和社会对教育的极大需求预示着网络教育有着极大的发展前景。 网络教育不仅仅是运用了先进技术手段,提高了教学效率,更重要的是改变了以教师为中心的传统教学模式,形成了以学生为中心的个性化学
10、习方式。这对于提高学生应用语言的能力和自主学习能力,尤其是扩大教学规模,解决师资不足的问题,保证我国高等教育大众化的实现有着极其重要的意义。网络教育使用的平台很多,如 Claroline、Moodle、Dokeos、Blackboard 等。通过对Moodle课程管理系统的研究,本文试图对Moodle平台进行全面分析和客观评价,并为Moodle环境下的课程设计与开发提供理论和实践指导。2 Moodle概述2.1 Moodle概述Moodle 是伴随着网络教育的发展而发展起来的一个课程管理系统。Moodle 这个词本是 Modular Object-Oriented Dynamic Learni
11、ng Environment(模块化面向对象的动态学习环境)的缩写。它是一个动词,表述的是一个这样的过程:遇事不慌不忙,想起什么就做什么,快乐的瞎忙活可也经常会带来一些领悟和创新。Moodle 的开发就是这样,学生与教师在在线课程中学习与教课也是这样。Moodle 的核心思想是“社会建构主义教育学(Social Constructionist Pedagogy)” ,它允许师生或学生彼此间共同的思考,合作解决问题。从这些过程中,与别人互动,或与教师互动时,学生很自然地就能建立概念,因为他们在交谈时,共同创造出一个可论述的世界,和一个共同架构,在其中可以产生沟通。Moodle 既适合于 100%
12、在线的课程,又可以作为传统课程的补充。网站管理上,由 Admin 用户管理,包括网站的主题,模块,语言以及新的活动模块插件的增添。学习管理由教师管理,教师对课程进行设置,对特定的学生采取多方面的管理。学生的课程设计也可以通过 Moodle 的课程设计模块相互交流、测验、提交和批阅。各类用户可以通过 E-mail、聊天室、BBS 发表意见,共同寻找、开发利用网络中丰富的教育资源,充分发挥 Internet 在教学上的作用。Mood1e是由澳大利亚Martin Dougiamas博士主持开发的学习管理系统(LMS),该系统是一套基于“社会建构主义学习理论”设计开发的开放源代码的软件,能够帮助教师高
13、质量的创建和管理网络课程。Moodle有两层含义:一层含义是Modular Object-Oriented Dynamic Learning Environment,即模块化面向对象的动态学习环境,一个用来构建网络学习环境的软件包;另一层含义是一个动词,表示想起什么就做什么,自由地发挥创造力和想象力。2.2 Moodle的发展历程Moodle的原创者Martin Dougiamas博士曾经担任澳大利亚卡丁技术大学(Curtin University of Technology)网络管理员,具有计算机和教育方面的知识背景。他对社会建构主义的热情、对网络教育的兴趣以及对自由软件的向往是他开发Moo
14、dle的初衷,他的理想是建立一个自由、灵活、易用的网络课程管理系统。在经历了几个原型版本之后,Moodle 1.0于2002年8月20日正式发布。Moodle自从诞生之日起就以自由软件的形式出现,遵循GPL(GNU Public License)协议,这给Moodle带来了无穷的活力,吸引了一大批开发者,目前已发展到1.8版本。受益于软件本身良好的多语言支持特性,Moodle已在世界各地的大学、中学和小学等各种教育机构应用起来。像Linux等其他自由软件一样,Moodle也已逐渐形成了自己的社群,moodle.org就是为Moodle使用者、开发者和研究人员协作交流而创建的网站,相关的商业支持
15、网站也于2003年建立起来。2.3 Moodle的特点2.3.1 先进的教学理念Martin Dougiamas本人非常推崇社会建构主义学习理论,Moodle是其将该理论应用于实践的一个试验,在其设计开发过程中处处体现着这一教育理念。建构主义认为学习是学习者与环境的相互作用中主动的意义建构过程,社会建构主义则更强调这一过程中学习者之间的对话、协作、互动等社会性活动对个人及群体意义建构的作用。因此,Moodle的设计不是仅仅停留在教学内容的管理与呈现上,而是更加关注对教学过程中各种“活动”的支持。Moodle对教师角色的定位不是知识的提供者,而是一个学习社团中有影响力的榜样,是各种学习活动的引导
16、者,是与学生平等对话、共同实现预定学习目标的组织者。Moodle不仅具备当前新兴的各种社会软件(Blog、Wiki、BBS等)的功能,还支持多样化的教学方式,它适用于多种组织类型,例如:传授接受型的教学组织、研究项目型的教学组织和社区小组型的教学组织等。更值得关注的是,Moodle课程还注重多样化教学评价,如过程性评价、总结性评价、档案袋评价、集体评价、同伴评价和教师评价等,这有利于及时发现和解决学生在学习过程中存在的问题。Moodle的出现更新了教师的教育理念,教师任务由先前的教案设计转变成课程设计,由课程内容设计转变成教学资源与活动的设计。2.3.2 功能强大Moodle具备任何e-Lea
17、rning平台具有的功能,如内容管理、论坛、测验、作业、聊天、选项表、日志、标签和调查等。此外,它还拥有诸如任务分配、联系、对话、签到、日历和文件管理等功能。因为Moodle采用模块化的设计方法,所以很容易创建新的功能模块。2.3.3 易于操作Moodle的操作十分简单,教师经过短期培训,就能掌握它的使用方法。Moodle适合小学、中学、大学、成人教育以及企业培训,每一位教师都可以轻松的在网上创建自己的课程。2.3.4 模块化的结构设计正如Moodle的名字一样,它的系统结构是模块化的。这种结构设计使得系统的灵活性格外突出,修改和扩充十分方便,最能体现Moodle这一特点的是课程开发过程中各种
18、活动模块的使用。Moodle为教师提供了基于社会建构主义教学设计理念的十几种课程活动,包括讨论区、学习日志、聊天室、学习资源、单元小结和在线调查等。教师通过简单的设置就可以给课程加入这些活动模块,管理员可以通过管理界面选择安装各种活动模块,而开发者可以依据定义的接口开发新的活动模块。正是这种模块化的结构设计使得Moodle给使用者、管理员和开发者提供了极大的方便和选择空间。目前,越来越多的模块被添加进去。2.3.5 支持多种语言Moodle专门配备了一个SCORM 模块,从Moodle 1.2起,它可以导入IMS QTI数据流。此外,Moodle还有一个WebCTIMS向Moodle转换的工具
19、。2.3.6 开放源代码Moodle是一个开放源代码的自由软件。自由软件精神源于对商业软件人为制造技术壁垒的批判,有利于集成众多开发者的智慧,开发出更加完美的软件。教育事业的公益性和社会性与自由软件的精神相得益彰, Moodle社群中除了有开发者,还有大量的教师和学生,来自他们的反馈和建议是Moodle茁壮成长的沃土,这是很多商业公司求之不得的宝贵财富,再加上自由软件所共有的免费获取、跨平台支持及优秀的国际特性,促进了Moodle的迅速成长。3 Moodle结构分析3.1 Moodle的系统架构Moodle平台采用模块化的结构设计和面向对象的开发方法,从系统架构上说,符合当前流行的三层B/S结
20、构,基本实现了数据访问、业务逻辑和用户界面的分离,具有较好的灵活性和可扩展性。其系统结构如图3-1所示。图3-1系统结构图从Moodle的网络课程结构上看,整个系统由多个学科类别构成。例如,计科系教学等。对应的某一学科类别中可以包含多门不同的课程,例如,教育管理学科包括教育评价、学校管理、班级管理等课程。课程又由版块、资源和活动三个模块构成,如图3-2所示。图3-2 Moodle网络课程系统结构版块模块:包含HTML、主菜单、人物(教师和学生)、即将发生的事件、显示在线用户、论坛搜索、日历、最新新闻、活动目录、消息(师生、生生一对一沟通)、登录、课程管理、显示课程、课程站点描述、RSS种子、随
21、机词条(词汇表)、Blog。 Moodle中所有核心代码和模块代码都是使用PHP脚本来编写, 但是不排除和其他技术整合的可能性, 特别是在SOA的构架下, Service是可以使用很多技术实现的, PHP在调用功能模块时, 可以调用非PHP构架的Service, 当然最终的HTML表现还是需要PHP来完成。3.2 Moodle的课程活动模块Moodle平台提供了各种各样的课程活动模块,教师可以根据教学需要选择合适的模块,为教学活动创建互动式环境。以下是Moodle提供的标准课程活动模块。3.2.1 作业(Assignment)模块通过作业模块,教师可以给学生布置一项任务,学生可以将自己的工作成
22、果(任何格式的文件)上传到服务器上。典型的作业包括论文、项目和报告等。这一模块使用起来具有很大的灵活性。3.2.2 选项(Choice)模块通过选项模块,教师可以提出一个问题并给出多种不同答案供学生选择。该模块可以用于引导学生对某一话题进行思考,调查学生对课程的态度等等。3.2.3 讨论区(Forum)模块讨论区模块是最重要的课程活动模块,交流和讨论都在这里进行。教师可以根据不同的教学目的选择不同的讨论区类型,还可以设置不同的显示格式以及对张贴的内容进行评分来作为评价的依据。通过订阅讨论区,学生和教师可以通过电子邮件收到最新的张贴内容。3.2.4 日志(Journal)模块日志模块提供一种重要
23、的反思活动。教师指定一个开放性的问题引导学生思考和写作,学生可以在一定时间内反复编辑和修改,每个学生所写的内容只有他本人和教师可以看到,教师可以给予反馈。3.2.5 资源(Resource)模块资源模块给教师提供了呈现教学内容和学习资源的途径。教师上传的文件、在Moodle所提供的界面上直接编辑的内容以及网址链接,都可以通过这个模块呈现。3.2.6 测试(Quiz)模块测验模块允许教师设计、编制测验,包括选择题、是非题、匹配题和简答题。题目分门别类储存于题库中,可以在课程中重复使用,还可以供其它课程使用。测验可以多次作答,每次作答都是自动打分,教师可以选择是否给予反馈信息或是否显示正确答案。这
24、个模块包含了评分工具。3.2.7 调查(Survey)模块调查模块提供了一些预设的调查问卷,这些问卷可以用来了解学生的意见、态度等。目前问卷包括COLLES和ATTLS两种,它们可以在课程开始前作为诊断摸底工具,在课程结束时作为评价工具。3.2.8 聊天室(Chat)模块聊天室模块允许平顺、实时的文字沟通。在聊天窗口中可显示大头照,支持URLs、表情图示、嵌入式的HTML、图形等。所有的讨论都会被记录下来以备为日后参考,而且学生也能看到。3.2.9 工作坊(Workshop)模块工作坊模块允许学生之间对作业进行评价,而且教师可以管理并加以评分。工作坊支持范围相当广泛的评价量表,学生对作业评分时
25、可由教师提供范本。3.3 Moodle的主要功能Moodle提供了覆盖管理员、教师和学生需要的各种功能,主要功能如下:3.3.1 管理员功能管理员的主要任务是搭建支持网上学习的软硬件环境、设置课程体系,并且确定哪些人可以在允许范围内使用该系统。管理员又可分为站点管理员和课程管理员。站点管理员主要负责修改系统配置,维护课程用户信息,设置站点首页、安装和维护功能模块等;课程管理员主要负责创建新课程,设置课程信息和任命教师。管理员功能如图3-3所示。图3-3 管理员功能3.3.2 教师功能教师又分为主讲教师和辅导教师。在指定教师时,如果不赋予教师编辑权限,该教师就是辅导教师。主讲教师可以编辑课程的资
26、源和组织教学活动;辅导教师具有管理成绩、查看日志、查看学生活动报告、进入教师讨论区等权限,他的任务主要是解答学生的问题,进行一些日常的教学管理,督促学生学习,并不参与课程设计。教师功能如图3-4所示。图3-4 教师功能3.3.3 学生功能学生可以在线阅读材料和参加学习活动,并将自己的学习历程以及对课程学习的感悟记录在自己的Blog上。学生功能如图3-5所示。图3-5 学生功能3.4 模块化构架分析基于Moodle下要如何设计和开发展示平台呢? 现在我们通过开发者的角度对其作一个分析。Moodle整体采用按功能封装的函数库结合面向对象的方法来构建。 它是建立在PHP环境之上的, 由于PHP是一种
27、解释执行的脚本程序语言, 所以在发布系统的时候我们几乎可以看到所有的系统源代码, 这为我们分析其结构非常有帮助。 但是, 由于其系统的规模和长期开源模块的积累,想要完全解析其系统构架是非常困难的。3.5 Moodle数据库模型要进行二次开发, 对一个系统的数据库模型的了解也是很必要的。Moodle的数据库模型经过几年的发展已经很复杂, 为了减少这种复杂关系带来的混乱, 它采用了这样的命名方式。如: mdl_course_categories, 其中mdl是所有系统表格的前缀, course代表属于course的模块,categroies代表课程分类表, 这样既可以保证清晰的表述, 又可以避免不
28、同模块之间数据表格的重名。 由于模块部分的数据模型会随着系统模块的增加而增加,所以当你扩展模块的时候, 那部分数据模型就可能会发生变化。在每次接触到某个模块的数据模型时, 必须分析到细节, 比如在设计自己的模块时, 如果需要进行权限分配, 就需要研究用户和角色的数据结构, 图3-6是user和role模块关系数据模型的简化图(各表的字段略)。图3-6 Moodle数据模型中user和role模块数据模型简化图4 Moodle的二次开发理论4.1 Moodle二次开发的形式通过上章对Moodle结构的分析, 以及对Moodle发社区的了解, Moodle二次开发重点不是Moodle的核心代码和模
29、块进行修改, 而是针对其外功能模块的设计和开发以满足特定的需求, 即围Moodle的核心代码进行的模块开发。图4-1描了Moodle二次开发的形式、 内容和适合的用户。图4-1 Moodle二次开发形式从上表中可以看出, Moodle的二次开发并不是程员的特权, 任何人都可以参与到Moodle的二次开发来。这也是开源软件的一个特性, 在学习中开发, 又开发中学习。Moodle给我们带来的不仅是一个网络程平台, 也给我们带来一种新的学习模式。4.2 Moodle二次开发的准备4.2.1 开发环境和工具要进行Moodle的二次开发, 首先要建立开发环境, 最必要的当然是构建一个开发用的Moodle
30、平台。注意不要在正式使用的平台下进行开发, 必须经过测试平台严格测试后再上线。 Moodle的平台可以创建在Windows下, 运行环境构建好以后就可以进行开发工具的选择。因为PHP是解释执行的脚本语言, 它是不需要编译的, 直接修改源文件就可以运行, 所以使用最简单的文本编辑器就可以开发。如果使用能对PHP的语法和关键词进行错误提示的工具就更好了。如果要进行模块开发的话, 推荐使用这个工具eclipse。如果是要进行语言包开发或是主题开发的话, 那么简单的文本编辑器如EditPlus, 以及网页编辑器如FrontPage和Dreamweaver,就可以解决问题了。4.2.2 熟悉目录结构二次
31、开发的第二个准备工作就是熟悉Moodle的目录结构, 可以帮助你迅速的定位文件, 进行修改。图4-2罗列了Moodle的主要目录及文件。Moodle在自定义后, 子目录的结构会有所不同, 上述根目录的结构对相同版本来说是固定的。图4-2 Moodle主要目录和文件4.2.3 总体开发约定二次开发的第三个准备工作就是熟悉Moodle二次开发的约定。因为Moodle是一个开源的软件, 二次开发的目的除了要满足自己的特定需求以外还有一件更有意义的事情, 就是Contribute, 让别的用户分享你的劳动成果。根据Moodle社区的约定进行二次开发才可以让所有的用户都方便地共享。Moodle社区制定了
32、 开 发 约 定,包括有coding guidelines、 interface guidelines等。特别是coding guidelines部分, 它约定了文件的名称、 代码编写的风格、 数据库基本结构和安全问题, 所有模块的开发都应该遵循这个约定。如果是进行主题的开发, 那么interface guidelines中约定了诸如界面风格、CSS结构、 页面布局等问题。 按照约定进行的二次开发模块可以很方便地嵌入到Moodle系统中, 不需对核心代码进行修改。4.3 Moodle二次开发指南4.3.1 通用规则1.所有代码文件应当使用“.php”作为扩展名。 2.所有模板文件应当使用“.h
33、tml”作为扩展名。 3.所有文本文件应当使用Unix风格的文本格式(多数的文本编辑器都有这个选项)。4.所有php标记都必须是“完整”标记,如 而非如 的短标记。5.所有已经存在的版权声明应当被保留。如果有必要,您可以加入自己的。 6.每个文件都应当包含主config.php文件。 7.每个文件都应当检查用户的身份是否正确,可以使用函数require_login()和isadmin()、isteacher()、iscreator()或者isstudent()。 8.所有访问数据库的操作都应当使用lib/datalib.php中的函数这样可以兼容更多的数据库服务器。所有的事情都应当是可以用这些
34、函数来完成的,如果遇到必须要写SQL代码的情况,请记住这些代码应当是跨平台的,且仅仅对您代码中的特定函数(通常在一个lib.php文件中)有效,且代码中用注释进行明确说明。 9.不要建立和使用标准全局变量$CFG、$SESSION、$THEME、$SITE、$COURSE和$USER之外的全局变量。 10.所有变量都应当被初始化或者至少在使用前用isset()或empty()等函数进行检测。 11.所有字符串都应当可翻译在“lang/en_utf8”目录中创建新的文本文件,字符串应当使用简洁的英文小写名称,并通过函数get_string()或print_string()来取得。为了保证语言包的
35、向后兼容,绝对不要删除字符串。 12.所有帮助文件应当可翻译在“lang/en_utf8/help”目录中创建文本文件并且通过helpbutton()函数来调用它们。如果要更新帮助文件: 对于小的修改,旧的翻译文件仍然可以继续使用时,可以直接进行修改,但您应当通知 translation AT moodle DOT org。 对于大的修改,应当创建新的文件,新文件的文件名是在原文件名的末尾添加一个数字,并在以后逐渐增加(如filename2.html),这样翻译人员就可以方便地知道文件有了一个新的版本。很显然,新的代码和帮助索引文件都必须修改以指向新版本的文件。 13.从浏览器发来的信息(以G
36、ET或POST形式发送)都应用了magic_quotes(无论PHP的设置如何),因此直接将它们插入到数据库中是安全的。所有其它的原始数据(来自文件或数据库的)都必须在插入数据库前使用addslashes()进行预处理。由于在这个问题上人们经常出错,我们编写了一个独立的页面来介绍如何添加和删除“”符号。 14.非常重要:Moodle中所有的文本,特别是用户提供的文本,都必须使用format_text()函数来输出。这样就可以确保文本已经正确地过滤。在输出函数页面上有关于这个问题的更多信息。. 15.用户的动作应当用add_to_log()函数记录下来,这些信息会被用于活动报告和日志。 4.3.
37、2 编码风格1. 缩进应当是4个连续的空格。绝对不要使用制表符。 2. 变量名应当是容易理解、有含义的小写英文单词。如果确实需要两个或以上的单词,请把它们连在一起,但要保持名称尽可能短。对于数组对象,请使用复数名称。 好的: $quiz 好的: $errorstring 好的: $assignments (for an array of objects) 好的: $i (but only in little loops) 坏的: $Quiz 坏的: $aReallyLongVariableNameWithoutAGoodReason 坏的: $error_string3. 常量应当总是大写的,
38、并总是以模块的名称作为前缀。单词之间应当用下划线分隔。 define(FORUM_MODE_FLATOLDEST, 1);4. 函数名称应当是简单的英文小写单词,且总是以模块名作为前缀以防止模块之间的冲突。单词之间以下划线分隔。变量如果可能应当总有合理的缺省值。注意在函数名和其后的括号之间没有空格。 function forum_set_display_mode($mode=0) global $USER, $CFG; if ($mode) $USER-mode = $mode; else if (empty($USER-mode) $USER-mode = $CFG-forum_displa
39、ymode; 5. 语句块必须总是使用大括号(即便是只有一行)。Moodle使用如下风格: if ($quiz-attempts) if ($numattempts $quiz-attempts) error($strtoomanyattempts, view.php?id=$cm-id); 6. 字符串应当尽可能用单引号定义以提高速度。 $var = some text without any variables; $var = with special characters like a new line n; $var = a very, very long string with a
40、.$single. variable in it; $var = some $text with $many variables $within it;7. 实用的注释应当尽可能填写,用以解释代码流程和函数与变量的功能。 每个函数和类都应该使用流行的phpDoc格式编写,以便自动生成代码文档。 内嵌注释应使用 / 风格,并且整齐布局,使其能融入代码中并和代码对齐。 /* * The description should be first, with asterisks laid out exactly * like this example. If you want to refer to a
41、 another function, * do it like this: link clean_param(). Then, add descriptions * for each parameter as follows. * * param int $postid The PHP type is followed by the variable name * param array $scale The PHP type is followed by the variable name * param array $ratings The PHP type is followed by
42、the variable name * return mixed */ function forum_get_ratings_mean($postid, $scale, $ratings=NULL) if (!$ratings) $ratings = array(); / Initialize the empty array if ($rates = get_records(forum_ratings, post, $postid) / Process each rating in turn foreach ($rates as $rate) .etc8. 换行可以被大方地使用把东西分散开看起
43、来会比较清楚。一般情况下,在花括号和普通命令之间应当有一个换行符,但在花括号和变量或函数之间可以没有换行符: foreach ($objects as $key = $thing) process($thing); if ($x = $y) $a = $b; else if ($x = $z) $a = $c; else $a = $d; 9. 当复制一个对象时,要使用php5的clone()函数(否则得到的就仅仅是指向第一个对象的引用)。Moodle会保证这种方法在php4上也能正常工作。 坏的: $b = $a; 好的: $b = clone($a);如果你要复制的并非对象,但包含了对象(
44、如对象数组),那么要使用fullclone()函数。 4.3.3 数据库结构1.每个表格都必须有一个自增的id字段(INT10)作为主键。2.包含着模块中数据实例的主表格必须和模块同名(譬如widget),并且至少包含如下字段: id - 如上一条所述 course - 每个实例所属的课程id name - 每个实例的完整名称 3.与模块相关的其它表格的命名规则是:如果它包含的信息是关于“things”的,则它的名字应当是widget_things(注意采用复数形式)。 4.表名和字段名都应当避免使用各种数据库的保留字。因此在创建前要仔细检查。 5.字段名称应当简短并使用小写,与变量名的规则相
45、同。 6.在可能的情况下,包含着对其它表格(如widget)引用的字段应当命名为widgetid。(注意这是个新约定,有一些老的表格并未遵守。) 7.布尔字段应当使用小整数类型(如INT4)并存储为0或1,这样就可以在需要时扩展它。 8.多数的表格应当有一个timemodified字段(INT10),并用PHP的time()函数取得的当前时间戳来更新它。 9.给每个字段定义一个缺省值(并保证它是有意义的)。 10.每个表名都必须有前缀($CFG-prefix)。在大多数情况下,您必须自己注意此问题。并且在Postgres中,所有的索引名也必须有前缀。 11.与某个版块相关的表格命名时需要遵守以下规则:$CFG-prefix + block_ + name_of_the_block + an