31,029
edits
No edit summary |
m (→PHP) |
||
| Line 31: | Line 31: | ||
De plus, le code doit fonctionner quand l'option PHP '''register_globals''' est à off (recommandé par PHP) aussi bien que quand l'option '''register_globals''' à on (par défaut sur de nombreuses installations). | De plus, le code doit fonctionner quand l'option PHP '''register_globals''' est à off (recommandé par PHP) aussi bien que quand l'option '''register_globals''' à on (par défaut sur de nombreuses installations). | ||
* Pas d'utilisation de la variable '''PHP_SELF'''. Utiliser | * Pas d'utilisation de la variable '''PHP_SELF'''. Utiliser à la place $_SERVER["PHP_SELF"]. Notez aussi que le framework Dolibarr passe une routine pour rendre plus sure le contenu du $_SERVER["PHP_SELF"] (dans le fichier main.inc.php, donc avant tout traitement métier) | ||
* Quand plusieurs variables doivent être initialisées avec la même valeur, il faut utiliser plusieurs | * Quand plusieurs variables doivent être initialisées avec la même valeur, il faut utiliser plusieurs instructions: | ||
<source lang="php"> | <source lang="php"> | ||
$var1=1;$var2=1;$var3=1; | $var1=1;$var2=1;$var3=1; | ||
| Line 72: | Line 72: | ||
* Utiliser "include_once" pour l'inclusion de tout fichier contenant des définitions de fonction ou de classes (donc fichiers *.class.php et *.lib.php), utiliser "include" pour tout inclusion de fichier de type template ou contenant un mixte de HTML et PHP (donc fichiers *.inc.php et *.tpl.php). | * Utiliser "include_once" pour l'inclusion de tout fichier contenant des définitions de fonction ou de classes (donc fichiers *.class.php et *.lib.php), utiliser "include" pour tout inclusion de fichier de type template ou contenant un mixte de HTML et PHP (donc fichiers *.inc.php et *.tpl.php). | ||
* Le style de code a utiliser est le PSR-2 (https://github.com/php-fig/fig-standards/blob/master/accepted/PSR-2-coding-style-guide.md) avec 2 | * Le style de code a utiliser est le PSR-2 (https://github.com/php-fig/fig-standards/blob/master/accepted/PSR-2-coding-style-guide.md) avec les exceptions suivantes: | ||
** Les fichiers doivent être sauvés en format Unix (LF) et non Windows (CR/LF). Le format Unix étant compatible sur les OS Unix like, Windows, Mac, alors que le format fichier texte Windows pose problème sous certains PHP sous Unix. | ** La longueur des lignes: PSR-2 indique que la longueur des lignes a une limite "soft" à 120. Il est en effet préférable d'avoir de longues lignes de données de déclaration plutôt que de longues pages car ce code ne contient aucune logique, toutefois une limite "hard" a été instauré à 1000 caractères. Du code qui ira au dela provoquera des erreurs dans la plateforme d'Intégration Continue. | ||
** Les smart tags PHP ne sont pas utilisés. Les sections de code doivent commencer par '''<?php''' | ** Les tabulations sont acceptées: L'autre exception est qu'on ne remplace pas les tabulations systématiquement par des espaces. L'utilisation des tabulations simplifie la vie de certains développeurs. De plus, l'utilisation d'espaces rend certaines fonction d'autoformatage défectueuse (comme sur certaines versions d'Eclipse, lors de copié-collé). | ||
** | ** Note 1: Les règles suivantes sont particulièrement importantes: | ||
*** Les fichiers doivent être sauvés en format Unix (LF) et non Windows (CR/LF). Le format Unix étant compatible sur les OS Unix like, Windows, Mac, alors que le format fichier texte Windows pose problème sous certains PHP sous Unix. | |||
Vous pouvez utiliser le fichier dev/codesniffer/ruleset.xml comme fichier de contrôle pour vérifier votre style de code avec PHPCodeSniffer. | *** Les smart tags PHP ne sont pas utilisés. Les sections de code doivent commencer par '''<?php''' | ||
** Note 2: Vous pouvez utiliser le fichier dev/codesniffer/ruleset.xml comme fichier de contrôle pour vérifier votre style de code avec PHPCodeSniffer. | |||
** Note 3: Vous remarquerez que le code actuel ne suit pas forcément tout cela. La raison est historique. La règle fut instaurée en cours de route, aussi, si vous trouvez du code non respectueux de ce standard, n'hésitez pas à le corriger. | |||
== Structures des classes et champs == | == Structures des classes et champs == | ||