任何合作的项目都需要一致性和稳定性才能保持它的强壮。
编写这些准则的目的是为所有的Moodle代码提供一个努力的目标。有一些比较老的已经存在的代码在极少的方面尚未达标,但它们最终将会被修正。所有新的代码都必须尽可能地遵守这些准则。
如果需要上传一个帮助文件:
我知道,如果您已经习惯了一种编码风格而我却让您改变它是有一点讨厌的,但比较而言,这比日后所有人都需要去搞清混合风格的Moodle代码要好一些。对于人们使用的任何编码风格都有很多支持和反对的意见,但现在正在使用的风格已经存在了,因此请坚持下去。
好的: $quiz
好的: $errorstring
好的: $assignments (用于数组)
好的: $i (仅用于小型循环)
坏的: $Quiz
坏的: $aReallyLongVariableNameWithoutAGoodReason
坏的: $error_string
define("FORUM_MODE_FLATOLDEST", 1);
function forum_set_display_mode($mode=0)
{
global $USER,
$CFG;
if ($mode)
{
$USER->mode
= $mode;
} else if (empty($USER->mode))
{
$USER->mode
= $CFG->forum_displaymode;
}
}
if ($quiz->attempts)
{
if ($numattempts >
$quiz->attempts)
{
error($strtoomanyattempts,
"view.php?id=$cm->id");
}
}
$var = 'some text without any
variables';
$var = "with special characters like a new line n";
$var = 'a very, very long string with a '.$single.' variable in it';
$var = "some $text with $many variables $within it";
/**
* The description should be first, with asterisks laid out exactly
* like this example. If you want to refer to a 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 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)
{
....etc
foreach ($objects
as $key =>
$thing) {
process($thing);
}
if ($x ==
$y)
{
$a
= $b;
} else if ($x ==
$z) {
$a
= $c;
} else {
$a
= $d;
}
$a = array()
或$obj = new stdClass();
。optional_variable()
函数。使用optional_param()
函数来替代。根据数据类型选择正确的PARAM_XXXX值。使用set_default()
函数检查和设置变量的可选值。require_variable()
函数。使用required_param()
来替代。根据数据类型选择正确的PARAM_XXXX值。$_GET
、$_POST
或$_REQUEST
。根据您的需要使用更合适的required_param()
或optional_param()
if (isset($_GET['something']))
这样的代码。可以使用诸如:$something = optional_param( 'something','',PARAM_ALPHA )
,并且用empty()
函数或(如果'empty'也是一个合法值)isset_param()
函数测试required_param()
、optional_param()
和其它的变量初始化一起放在每个文件的开头,这样它们会更容易被找到。<input type="hidden" name="sesskey" value="<?php echo sesskey(); ?>" />
。使用表单时用if (!confirm_sesskey()) {error('Bad Session Key');}
检查。clean_filename()
函数“过滤”,但如果已经适当地使用required_param()
或optional_param()做了此项工作,则不必如此
addslashes()
处理。一个完整数据对象可以用addslashes_object()
一次性完全处理完毕。POST
数据(也就是来自表单的数据),而不能来自GET
数据(也就是来自URL的数据)。$_SERVER
的数据。它会给移植性带来问题clean_param
函数处理,并且针对数据类型,使用了恰当的PARAM_XXXX。Version: $Id$