Cualquier proyecto colaborativo necesita que la consistencia y la estabilidad sean fuertes.
Este manual de estilo ha sido escrito para conseguir que todo el código de Moodle cumpla estas características. Es cierto que la parte más antigua del código no cumple lo aquí especificado en algunos casos, pero esto será solucionado gradualmente. Todo el código nuevo definitivamente deberá adherirse a estos estándares de la forma más exacta posible.
Si necesita actualizar un fichero de ayuda:
Comprendo que puede ser un poco frustrante modificar su estilo de programación si ha trabajado en otras cosas, pero compara esa frustración con la frustración de toda la gente que intente, más adelante, encontrar el sentido del código de Moodle si es una mezcla de estilos. Obviamente, hay muchos puntos a favor y en contra de cada estilo que la gente utiliza, pero el que se detalla aquí es el que deberá utilizar.
BIEN:
$quiz
BIEN: $errorstring
BIEN: $assignments
(for an array of objects)
BIEN: $i (but
only in little loops)
MAL: $Quiz
MAL: $aReallyLongVariableNameWithoutAGoodReason
MAL: $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()
o $obj = new stdClass();
.optional_variable()
.
En su lugar, utilice la función optional_param()
. Seleccione
la opción PARAM_XXXX apropiada al tipo de parámetro que espera. Para comprobar
y definir un valor opcional para una variable, utilice la función set_default()
.require_variable()
.
En su lugar, utilice la función required_param()
. Seleccione
la opción PARAM_XXXX apropiada al tipo de parámetro que espera.data_submitted()
, with cuidado. La información
todavía debe ser limpiada antes de utilizarla.$_GET
, $_POST
o $_REQUEST
.
En su lugar, utilice las funciones required_param()
o optional_param()
apropiadas.if
(isset($_GET['algo']))
.
Utilice, por ejemplo, $algo = optional_param( algo, -1, PARAM_INT
)
y entonces compruebe que está dentro de los valores esperados, por
ejemplo, if ($something>=0) {...
.required_param()
, optional_param()
y el resto de inicialización de variables en el principio de cada fichero
(o función) para que sea fácilmenente localizable.<input
type="hidden" name="sesskey" value="<?php
echo sesskey(); ?>" />
.
Cuando el formulario es procesado, compruebe if (!confirm_sesskey())
{error('Bad Session Key');}
.clean_filename()
,
si esto no ha sido realizado con el uso de las funciones required_param()
o optional_param()
con anterioridad. addslashes()
aplicada antes de volver
a enviar la información a la base de datos. Un objeto completo puede ser
procesado con la función addslashes_object()
.POST
(por ejemplo, información de un formulario) en lugar de utilizar peticiones GET
(por
ejemplo, información de la URL).$_SERVER
si
puede evitarlo. Presenta algunos problemas de portabilidad.clean_param()
utilizando la opción PARAM_XXXX
apropiada.Version: $Id$