[SPIP] Proposé : SCS1

SPIP

Article proposé

L’article « SCS1
(https://www.spip.net/ecrire/?exec=article&id_article=6677) » est proposé
à la publication depuis le jeudi 2 septembre 2021.


SCS1

SPIP Coding Standard 1

jeudi 2 septembre 2021 , par James

Sommaire

  • Fichiers
  • Lignes et indentation
  • Fonctions, Classes et Namespaces
  • Constantes, Variables et propriétés de classe
  • Mots-clés réservés, Structures de contrôle et opérateurs
  • Opérations sur les chaines de caractères

Les règles de codage s’appuient sur la recommandation PSR-12
(http://www.php-fig.org/psr/psr-12/) sans la respecter entièrement.
Ci-dessous, le détail :

Fichiers|Retour au sommaire

  • La balise d’ouverture d’un fichier PHP DOIT être <?php.
    L’ouverture <? doit être proscrite.
  • L’encodage de cararctères des fichiers PHP DOIT être UTF-8
    sans BOM
    .
  • Tous les fichiers PHP DOIVENT utiliser uniquement la fin de ligne
    Unix LF (linefeed).
  • Tous les fichiers PHP DOIVENT se terminer par une ligne non vide,
    terminée par un seul LF.
  • La balise de fermeture ?> DOIT être omise des fichiers contenant
    uniquement du PHP.

Lignes et indentation|Retour au sommaire

  • Il NE DOIT PAS y avoir de limite stricte sur la longueur de la ligne.
  • La limite souple sur la longueur de ligne DOIT être de 120
    caractères.
  • Les lignes NE DEVRAIENT PAS dépasser 80 caractères ; les lignes plus
    longues DEVRAIENT être divisées en plusieurs lignes suivantes de 80
    caractères chacune au maximum.
  • Il NE DOIT PAS y avoir d’espace à la fin des lignes.
  • Des lignes vierges PEUVENT être ajoutées pour améliorer la
    lisibilité et pour indiquer les blocs de code associés, sauf là où cela
    est explicitement interdit.
  • Il NE DOIT PAS y avoir plus d’une instruction par ligne.
  • Contrairement à PSR-12, le code DOIT utiliser une tabulation pour
    chaque niveau de retrait et NE DOIT PAS utiliser d’espaces pour le
    retrait.

Fonctions, Classes et Namespaces[|Retour au

sommaire](#s-Fonctions-Classes-et-Namespaces)

  • Dans les versions 4.x et antérieures, SPIP ne suit pas de PSR
    d’autoloading (ex : PSR-4 (PSR-4: Autoloader - PHP-FIG). En
    conséquence, SCS1 n’impose aucun formalisme pour les namespaces et les
    classes, y compris les Traits et les interfaces.

  • Les fonctions DEVRAIENT être déclarées en snake_case
    (https://fr.wikipedia.org/wiki/snake_case).

  • L’accolade ouvrante DOIT être sur la même ligne que le nom de la
    fonction, et DOIT avoir un espace avant et aucun espace après.

    class
    
     MaClasse 
    
    &#123;
    
    
    function
    
     une_methode
    
    &#40;
    
    
    &#41;
    
    
    &#123;
    
    
    		…
    
    
    &#125;
    
    
    &#125;
    

Constantes, Variables et propriétés de classe[|Retour au

sommaire](#s-Constantes-Variables-et-proprietes-de-classe)

  • Les constantes DOIVENT être déclarées en majuscules avec un tiret
    bas séparateur et préfixées par un tiret bas.

    define
    
     (http://www.php.net/define)
    
    &#40;
    
    
    '_NOUVELLE_CONSTANTE'
    
    
    ,
    
    
    true
    
    
    &#41;
    
    
    ;
    
  • Les variables et les arguments de fonctions DEVRAIENT être déclarées
    en snake_case (https://fr.wikipedia.org/wiki/snake_case).

    function
    
     ma_super_fonction
    
    &#40;
    
    
    $un_argument
    
    
    ,
    
    
    $autre_argument
    
    
    &#41;
    
    
    &#123;
    
    
    	…
    
    
    &#125;
    
  • les propriétés de classe PEUVENT être déclarées en snake_case
    (https://fr.wikipedia.org/wiki/snake_case).

  • Les variables globales, dont l’usage est déconseillé, sont
    référencée par $GLOBALS["xxx"] et non par une déclaration global $xxx, car cela permet d’être certain de la référence qu’on utilise
    et de facilement faire la différence lors de la lecture du code.

    if
    
    
    &#40;
    
    
    isset
    
     (http://www.php.net/isset)
    
    &#40;
    
    
    $GLOBALS
    
    
    &#91;
    
    
    'meta'
    
    
    &#93;
    
    
    &#91;
    
    
    'adresse_site'
    
    
    &#93;
    
    
    &#41;
    
    
    &#41;
    
    
    &#123;
    
    
    $adresse
    
    
    =
    
    
    $GLOBALS
    
    
    &#91;
    
    
    'meta'
    
    
    &#93;
    
    
    &#91;
    
    
    'adresse_site'
    
    
    &#93;
    
    
    ;
    
    
    &#125;
    

Mots-clés réservés, Structures de contrôle et opérateurs[|Retour au

sommaire](#s-Mots-cles-reserves-Structures-de-controle-et-operateurs)

  • Tous les mots-clés et types réservés PHP 1
    (PHP: List of Keywords - Manual)2
    (PHP: List of other reserved words - Manual) DOIVENT
    être en minuscules.

  • Tous les nouveaux types et mots-clés ajoutés aux futures versions de
    PHP DOIVENT être en minuscules.

  • La forme courte des mots-clés de « type », quand ils sont présents,
    DOIT être utilisée, c’est-à-dire bool au lieu de boolean, int au
    lieu d’integer, etc.

  • L’accolade ouvrante des structures de contrôle DOIT être sur la
    même ligne que le nom de la fonction, et DOIT avoir un espace avant et
    aucun espace après.

  • Dans les expressions PHP, laisser un espace de part et d’autre des
    opérateurs binaires (+, =, *, and, …).

    $hypothenuse
    
    
    =
    
    
    sqrt
    
     (http://www.php.net/sqrt)
    
    &#40;
    
    
    &#40;
    
    
    $a
    
    
    *
    
    
    $a
    
    
    &#41;
    
    
    +
    
    
    &#40;
    
    
    $b
    
    
    *
    
    
    $b
    
    
    &#41;
    
    
    &#41;
    
    
    ;
    
  • Les opérateurs unaires (!, …) doivent être collés au paramètre
    auquel ils s’appliquent.

  • la notation courte DOIT être appliquée sur les tableaux

    $tableau
    
    
    =
    
    
    &#91;
    
    
    'cle'
    
    
    =>
    
    
    'valeur'
    
    
    ,
    
    
    ...
    
    
    &#93;
    
    
    ;
    

Opérations sur les chaines de caractères[|Retour au

sommaire](#s-Operations-sur-les-chaines-de-caracteres)

  • Utilisez les guillemets doubles uniquement quand cela est nécessaire.
    Si vous n’avez pas de variable ($var) ou de caractère de contrôle (\n,
    \r, \t…) à évaluer dans la chaîne, utilisez les guillemets simples.

    $chaine
    
    
    =
    
    
    "<a href=
    
    \"
    
    
    $url
    
    
    \"
    
    >Lien</a>
    
    \n
    
    "
    
    
    ;
    
    
    $chaine2
    
    
    =
    
    
    'Une simple phrase : '
    
    
    .
    
    
    $autre_chose
    
    
    ;
    

— Envoyé par SPIP (https://www.spip.net/)


rubon205-d568d.jpg