Attention : vous consultez actuellement la documentation dédiée aux versions 1.x de Moodle. La documentation pour les versions 2.x de Moodle est consultable ici : Développement:Directives de codage, celle pour les versions 3.x de Moodle est consultable ici : Développement:Directives de codage et celle pour Moodle 4.x est consultable là : Développement:Directives de codage.

« Développement:Directives de codage » : différence entre les versions

De MoodleDocs
Aller à :navigation, rechercher
Aucun résumé des modifications
Ligne 34 : Ligne 34 :
'''Traduction en cours...'''
'''Traduction en cours...'''


Suite sur [[:en:Development:Coding|Coding Guidelines]]
Suite sur [[:en:Development:Coding|Coding Guidelines]].

Version du 18 mars 2009 à 16:04

Tout projet collaboratif a besoin de cohérence et de stabilité pour rester solide.

Ces directives de codage sont faites pour assurer un but commun à tout code de Moodle. Il est vrai que quelques uns des plus vieux codes existants sont déficients, mais ils seront tous finalement réarrangés. Tout nouveau code doit adhérer à ces standards de manière aussi proche que possible.


Règles générales

  1. Tous les fichiers de code doivent avoir l'extension .php .
  2. Tous les fichiers template doivent avoir l'extension .html .
  3. Tous les fichiers de texte doivent utiliser le format de texte style Unix (la plupart des éditeurs de texte l'ont comme option).
  4. Toutes les balises php doivent être des balises "complètes" <?php ?> ... et non des balises "courtes" comme <? ?>.
  5. Toutes les notes de copyright existantes doivent être conservées. Vous pouvez ajouter la vôtre si nécessaire.
  6. Chaque fichier doit inclure (require_once) le fichier principal config.php .
  7. Tous les autres include/require doivent utiliser un début de chemin absolu commençant pas $CFG->dirroot ou $CFG->libdir, pas d'inclusions relatives, qui se comportent parfois de manière étrange sous PHP.
  8. Les inclusions doivent être faites au début des fichiers ou à l'intérieur des fonctions/méthodes, ne pas mettre d'include/require au milieu d'un fichier.
  9. Chaque fichier doit vérifier que l'utilisateur est correctement identifié, en utilisant require_login() et has_capability ou require_capablity().
  10. Tous les accès aux bases de données doivent utiliser les fonctions de lib/dmllib.php autant que possible - cela permet une compatibilité entre une large gamme de bases de données. Vous devriez remarquer que presque tout est possible en utilisant ces fonctions. Si vous devez écrire du code SQL, alors assurez-vous qu'il est : cross-plaform; restreint à des fonctions spécifiques à l'intérieur de votre code (normalement un fichier lib.php); et clairement indiqué.
  11. Ne créez pas de nouvelles variables globales. Utilisez seulement les variables globales standard de Moodle $CFG, $SESSION, $THEME, $SITE, $COURSE et $USER.
  12. Toutes les variables doivent être initialisées ou leur existence doit avoir été au moins testés en utilisant isset() ou empty() avant d'être utilisées.
  13. Toutes les chaînes doivent être traduisibles - créez de nouveaux textes dans les fichiers "lang/en_utf8" avec des noms anglais concis et en minuscules, et récupérez-les dans votre code en utilisant get_string() ou print_string(). N'effacez jamais les chaînes pour assurez que la rétro-compatibilité des packs de langues soit maintenue.
  14. N'utilisez pas les fonctions p() et s() pour afficher des chaînes. Ces fonctions ne sont pas destinées à afficher du html avec des balises. Utilisez echo() à la place.
  15. Toutes les erreurs doivent être affichées en utilisant print_error() pour optimiser la traduction et l'aide aux utilisateurs (cela se lie automatiquement au documents wiki).
  16. Tous les fichiers d'aide doivent être traduisibles - créez de nouveaux textes dans le répertoire "lang/en_utf8/help" et appelez-les en utilisant helpbutton(). Si vous avez besoin de mettre à jour un fichier d'aide :
  • avec un changement mineur, où une vieille traduction du fichier aura toujours un sens, alors vous pouvez faire le changement mais vous devez l'annoncer ) translation AT moodle DOT org.
  • pour un changement majeur, vous devez créer un nouveau fichier en ajoutant un nombre incrémenté (ex nomdefichier2.html), ainsi les traducteurs peuvent facilement voir que c'est une nouvelle version du fichier. Il est évident que le nouveau code et les fichiers index d'aide doivent également être modifiés pour pointer vers les versions les plus récentes.
  1. Les données entrantes depuis le navigateur (envoyées via GET ou POST) voient automatiquement s'ajouter des magic_quotes (sans tenir compte des réglages de PHP), ainsi vous pouvez les insérer sans danger directement dans la base de données. Toute autres donnée brute (depuis des fichiers, ou depuis des bases de données) doit être sécurisée avec addslashes() avant de l'insérer dans la base de données. Parce que ceci est trop souvent fait mal correctement, il y a plus d'explications sur ce problème d'ajouter et supprimer des slashes sur une page à part.
  2. TRES IMPORTANT : A l'intérieur de Moodle, Tous les textes doivent être affichés en utilisant la fonction format_text(), particulièrement ceux qui viennent des utilisateurs. Ceci assure un texte correctement filtré et nettoyé. Plus d'informations peuvent être trouvées sur la page à propos des fonctions de sortie.
  3. Les actions d'utilisateurs doivent être enregistrées en utilisant la fonction add_to_log(). Ces historiques sont utilisés pour les reports d'activité et les Logs.
  4. Créez toujours des liens HTML relatifs à la racine du site, i.e. des liens du type $CFG->wwwroot/mod/blonk/view.php?id=99 plutôt que seulement view.php?id=99. Cela permettra à votre code de fonctionner s'il est appelé par un script dans un autre dossier, entre autres.
  5. Les modules doivent stocker les variables de configuration en utilisant set_config('varname', $value, 'mod/modulename') où le dernier paramètre est le chemin vers le répertoire du module.
  6. Respectez les séparateurs décimaux spécifiés dans le pack de langage - n'utilisez pas number_format() directement, à la place utilisez format_float() et unformat_float() quand vous affichez ou traitez des nombres flottants (obligatoire en 2.0)


Traduction en cours...

Suite sur Coding Guidelines.