- 1、本文档共8页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
Moodle二次开发指南-代码编写指南
通用规则
所有代码文件应当使用“.php”作为扩展名。
所有模板文件应当使用“.html”作为扩展名。
所有文本文件应当使用Unix风格的文本格式(多数的文本编辑器都有这个选项)。
所有php标记都必须是“完整”标记,如 ?php?? ……而非如 ??? 的短标记。
所有已经存在的版权声明应当被保留。如果有必要,您可以加入自己的。
每个文件都应当包含主config.php文件。
每个文件都应当检查用户的身份是否正确,可以使用函数require_login()和isadmin()、isteacher()、iscreator()或者isstudent()。
所有访问数据库的操作都应当使用lib/datalib.php中的函数――这样可以兼容更多的数据库服务器。所有的事情都应当是可以用这些函数来完成的,如果遇到必须要写SQL代码的情况,请记住这些代码应当是跨平台的,且仅仅对您代码中的特定函数(通常在一个lib.php文件中)有效,且代码中用注释进行明确说明。
不要建立和使用标准全局变量$CFG、$SESSION、$THEME、$SITE、$COURSE和$USER之外的全局变量。
所有变量都应当被初始化或者至少在使用前用isset()或empty()等函数进行检测。
所有字符串都应当可翻译――在“lang/en_utf8”目录中创建新的文本文件,字符串应当使用简洁的英文小写名称,并通过函数get_string()或print_string()来取得。为了保证语言包的向后兼容,绝对不要删除字符串。
所有帮助文件应当可翻译――在“lang/en_utf8/help”目录中创建文本文件并且通过helpbutton()函数来调用它们。如果要更新帮助文件:
对于小的修改,旧的翻译文件仍然可以继续使用时,可以直接进行修改,但您应当通知 translation AT moodle DOT org。
对于大的修改,应当创建新的文件,新文件的文件名是在原文件名的末尾添加一个数字,并在以后逐渐增加(如filename2.html),这样翻译人员就可以方便地知道文件有了一个新的版本。很显然,新的代码和帮助索引文件都必须修改以指向新版本的文件。
从浏览器发来的信息(以GET或POST形式发送)都应用了magic_quotes(无论PHP的设置如何),因此直接将它们插入到数据库中是安全的。所有其它的原始数据(来自文件或数据库的)都必须在插入数据库前使用addslashes()进行预处理。由于在这个问题上人们经常出错,我们编写了一个独立的页面来介绍如何添加和删除“\”符号。
非常重要:Moodle中所有的文本,特别是用户提供的文本,都必须使用format_text()函数来输出。这样就可以确保文本已经正确地过滤。在输出函数页面上有关于这个问题的更多信息。.
用户的动作应当用add_to_log()函数记录下来,这些信息会被用于活动报告和日志。
编码风格
我知道,如果您已经习惯了一种编码风格而我却让您改变它是有一点讨厌的,但比较而言,这比日后所有人都需要去搞清混合风格的Moodle代码要好一些。对于人们使用的任何编码风格都有很多支持和反对的意见,但现在正在使用的风格已经存在了,因此请坚持下去。
1. 缩进应当是4个连续的空格。绝对不要使用制表符。
2. 变量名应当是容易理解、有含义的小写英文单词。如果确实需要两个或以上的单词,请把它们连在一起,但要保持名称尽可能短。对于数组对象,请使用复数名称。
好的: $quiz
好的: $errorstring
好的: $assignments (for an array of objects)
好的: $i (but only in little loops)
坏的: $Quiz
坏的: $aReallyLongVariableNameWithoutAGoodReason
坏的: $error_string
3. 常量应当总是大写的,并总是以模块的名称作为前缀。单词之间应当用下划线分隔。
define(FORUM_MODE_FLATOLDEST, 1);
4. 函数名称应当是简单的英文小写单词,且总是以模块名作为前缀以防止模块之间的冲突。单词之间以下划线分隔。变量如果可能应当总有合理的缺省值。注意在函数名和其后的括号之间没有空格。
function forum_set_display_mode($mode=0) {
global $USER, $CFG;
if ($mode) {
$USER-mode = $m
文档评论(0)