Porosi për kodimin e Moodle

Ççdo projekt bashkpunimi ka nevojë për konsistencë dhe stabilitet për të qënë i fortë.

Këto porosi jepen për të treguar synimin e kodit Moodle. Disa nga kodet e vjetra mbulojnë pak fusha, por kjo do të rregullohet eventualisht. Të gjitha kodet e reja duhet duhet tu afrohen sa të jetë e mundur këtyre standarteve.

Rregulla të përgjithëshme

  1. Të gjithë skedarët e kodeve duhet të kenë ekstenksionin (prapashtesën): .php .
  2. Të gjithë skedarët template duhet të përdorin ekstenksionin: .html .
  3. Të gjithë skedarët tekst duhet të përdorin formatin Unix-style (shumica e editorëve të tekstit e kanë këtë opsion).
  4. Të gjitha etiketat (tags) php duhet të jenë 'full' sikurse <?php ?> ... jo 'short' sikurse <? ?>.
  5. Të gjitha shënimet ekzistuse të copyright duhet të mbahen. Ju mund të shtoni kërkesat tuaja.
  6. Çdo skedar duhet të inkludojë skedrain kryesor config.php .
  7. Çdo skedar duhet të kontrollojë që identiteti i përdoruesit është i saktë, duke përdorur funksionet: require_login() dhe isadmin(), isteacher(), iscreator() ose isstudent().
  8. Aksesimet e databazës duhet të përdorin funksionet në lib/datalib.php gjithmonë e mundëshme - kjo mundëson kompatibilitetin ndërmjet një game të gjerë databazash. Ju duhet të kuptoni se thuajse çdo gjë është e mundur duke përdorur këto funksione. Nëse duhet të shkruani një kod SQL , sigurohuni që kodi është: cross-platform; i kufizuar për funksione specifikë brenda kodit (zakonisht një skedar lib.php); dhe i shënuar qartësisht.
  9. Mos krijoni dhe përdorni variabla globale me përjashtim të artyre standarte $CFG, $SESSION,$THEME dhe $USER.
  10. Të gjitha variablat duhet të iniciohen dhe të testohen duke përdorur: isset() ose empty() para se ato të përdoren.
  11. Të gjitha stringjet duhet të jenë të përkthyeshëm - krijo tekste të reja në skedarët "lang/en" dhe thërriti ato duke përdorur funksionin get_string() ose print_string().
  12. Të gjithë skedarët help duhet të jenë të përkthyeshëm - krijo tekste të reja në direktorinë "en/help" dhe thërriti ato duke përdorur: helpbutton().
  13. Të dhënat që hyjnë nga browser-i (nëpërmjet GET ose POST) automatikisht zbatojnë magic_quotes (pavarësisht parametrave të PHP) kështu që ju mund ta fusni atë në mënyrë të sigurtë drejtpërdrejt në databazë. Të gjitha të dhënat e tjera (nga skedarë, ose nga databaza) duhet të mënjanohen me: addslashes() para se të futen në databazë.

 

Coding Style

E di që është pak e mërzitshme të ndryshosh stilin nëse jeni mësuar me një tjetër, por vini në balancë këtë mërzitje me mërzitjen e të gjithë njerzve të tjerë që do përpiqen më vonë të kuptojnë kodet Moodle me stile të përziera . Ka shumë arsye pro dhe kundër çdo stili që përdorin njerzit, por stili korent strong>është, prandaj mbetuni në të.

  1. Indent-imi duhet të jetë me 4 hapsira. Mos përdorni tab-et FARE.
  2. Emrat e variablave duhet të jenë lehtësisht të lexueshëm, me kuptim të fjalës në Anglisht. Nëse keni nevojë për më shumë se një fjalë atë here bashkojini ato, por mbaji sa më shkurt. Përdor emrat në shumës për tabelat e objekteve.

    GOOD: $quiz
    GOOD: $errorstring
    GOOD: $assignments (për një tabelë objektesh)
    GOOD: $i (por vetëm pak cikle)

    BAD: $Quiz
    BAD: $aReallyLongVariableNameWithoutAGoodReason
    BAD: $error_string

  3. Konstantet duhet të jenë gjithmonë me germa të mëdha, dhe gjithmonë fillo me emrin e modulit. Ato duhet ti kenë fjalët të ndara me underscore.

    define("FORUM_MODE_FLATOLDEST", 1);

  4. Emrat e funksioneve duhet të jenë fjalë të thjeshta në Anglisht, dhe të fillojnë me emrin e modulit për të shmangur konfliktet midis moduleve. Fjalët duhet të ndahen me underscore. Parametrat duhet të kenë gjithmonë defaults nëse është e mundur. Vini re se nuk ka hapësira midis emrit të funksionit dhe kllapave që e pasojnë ().

    funksion forum_set_display_mode($mode=0) {
        global
    $USER, $CFG;

        if (
    $mode) {
            
    $USER->mode = $mode;
        } else if (empty(
    $USER->mode)) {
            
    $USER->mode = $CFG->forum_displaymode;
        }
    }

  5. Blloqet gjithmonë duhet të mbyllen në kllapa gjarpërushe (edhe kur ka vetëm një rresht). Moodle përdor këtë stil:

    if ($quiz->attempts) {
        if (
    $numattempts > $quiz->attempts) {
            
    error($strtoomanyattempts, "view.php?id=$cm->id");
        }
    }

  6. Stringjet duhet të përcaktohen duke përdorur thonjëza njëshe aty ku është e mundur, për të rritur shpejtësinë.

    $var = 'ca tekst pa ndonjë variabël';
    $var = "me karaktere speciale si një rresht i ri \n";
    $var = 'një variabël shumë, shumë i gjatë me një '.$single.' variabël në të';
    $var = "ca $tekst me $shumë variabla $brenda tij";

  7. Komentet duhet të përdorin dy ose tre slashe dhe në rresht me kodin.

    function forum_get_ratings_mean($postid, $scale, $ratings=NULL) {
    /// Kthen mesataren klasifikimeve të një postimi që i jepet përdoruesit corent nga të tjerë.
    /// Shkalla është një tabelë e klasifikimeve të mundëshme
    ///Ratings është një tabelë e thjeshtë e notave aktuale (numra të plotë)

        
    if (!$ratings) {
            
    $ratings = array();     // Inicializon një tabelë bosh
            if (
    $rates = get_records("forum_ratings", "post", $postid)) {
                
    // Proceson çdo klasifikim me rradhë
                foreach (
    $rates as $rate) {
    ....etc

  8. Hapsirat duhet të përdoren lirisht - mos hezitoni ti hapni gjërat për të qenë sa më të qarta. Përgjithësisht, duhet një spacio midis kllapave dhe komandave normale, por jo spacio midis kllapave dhe variablave ose funksioneve:

    foreach ($objects as $key => $thing) {
        process($thing);
    }

    if ($x == $y) {
        $a = $b;
    } else if (
    $x == $z) {
        $a = $c;
    } else {
        $a = $d;
    }

 

Strukturat e Databazave

  1. çdo tabelë duhet të ketë meauto-rritje njëid fushe (INT10) si indeks primar.
  2. Tabela kryesore që përmban shembujt e çdo moduli duhet të ketë të njëjtin emër simoduli (psh widget) dhe t?7 përmbajë minimumi fushat e mëposhtme:
  3. Tabelat e tjera të shoqëruara me një modul që përmbajnë informacion mbi 'things' duhet të emërtohen widget_things (shilo shumsin).
  4. Emrat e kolonave duhet të jenë të thjeshta dhe të shkurtër, duke ndjekur po ato rregulla sikurse emrat e variablave.
  5. Aty ku është e mundur, kolonat që përmbajnë një referencë për id e fushës së një tabele tjetër(psh widget) duhet të thirret widgetid. (Shiko se kjo marveshje është e re dhe nuk gjendet në tabelat e vjetra)
  6. Fushat Boolean duhet të futen si fusha me numër të plotë të vogël (psh INT4) që përmban 0 os 1, për të lejuar më vonë zgjerimin e vlerave nëse është e nevojshme.
  7. Shumica e tabelave duhet të kenë një fushë timemodified (INT10) e cila updetohet me një timestamp korente e përftuar nga një funksion PHP time() .

Dokumentacioni i Moodle

Version: $Id$