Home > Développement Web > Conventions de codage PHP

Conventions de codage PHP

Ne pas adopter de vraies conventions de codage en PHP, langage de script où la syntaxe est libre et les variables non typées, peut conduire à une jungle de code où vous seul pourrez vous retrouver.

Suivre quelques conventions, même simples, vous aidera à éclaircir votre code en le rendant plus lisible et donc plus facilement maintenable. De plus, si un développeur doit mettre le nez dedans, sa lecture et sa prise en main sera grandement facilitée si vous lui transmettez un document récapitulant vos conventions.

Les points que je présente ici ne sont pas des lois mais simplement les conventions de codage PHP que je m’efforce de suivre; libre à vous d’y piocher vos propres “habitudes”, l’important étant de suivre la voie qu’on s’est fixé.

Configuration PHP

Error_reporting doit être à E_ALL et le code ne doit générer aucune notice ou warning.

Register globals à OFF, on se sert donc de $_POST et $_GET (notamment) pour accéder aux variables globales.

Short open tags à OFF, on sert donc de <?php et ?> pour délimiter les scripts (et pas <? ?>)

Les noms : Fonctions, Variables et Constantes

Les noms de fonction doivent commencer par un verbe. Exemple: getUserLogin()
Les noms de variables sont en minuscule. Les constantes sont toujours écrites en majuscules.

Camel Case

Le “Camel Case” est la pratique qui vise à utiliser une majuscule comme séparateur de mots. Exemple : userLogin.

La Notation Hongroise

La Notation Hongroise est une convention qui vise à “pseudo-typer” les variables, en indiquant leur type dans leur nom. Par exemple, le “tableau de résultats” sera nommé aResults (pour array), le “nombre de pages” sera “nPages”…

Accolades

Que ce soit pour les fonctions, les boucles, ou les instructions conditionnelles, on place, au choix, les accolades en fin de ligne ou au début de la suivante. Par contre, on les met même quand elles sont facultatives. Pas de

  1. if ($i == 0) doMachin();

mais plutot :

  1. if ($i == 0) {
  2.      doMachin();
  3. }

Bonnes habitudes diverses

Quand on boucle sur le contenu d’un tableau, ne pas écrire :

  1. for ($i=0;$i<count($tableau);$i++) {

mais :

  1. $max = count($tableau);
  2. for ($i=0;$i<$max;$i++) {

Cela évite des calculs inutiles (le comptage des éléments du tableau n’est réalisé qu’une fois)

Commentaires

On suivra la norme JavaDoc (sans en faire trop, non plus):

  1. /**
  2. * Ceci est le commentaire d’un élément important du code (fonction, classe…)
  3. * @author : Didier S. «[email protected]»
  4. * @param : $str / string / string à traiter
  5. * @param : $nb / integer / nombre de caractères à retourner
  6. */

Toutes les fonctions et classes devraient être commentées.
(Note: il existe des outils pour générer de la documentation HTML à partir des commentaires du code source, comme phpDocumentator, objet d’un prochain post)

Ce post vous a été utile ? Re-Twittez le ! ReTwittez ce post

Développement Web ,

  1. | #1

    Camel Case aussi et surtout appelé Studly Caps ;)

  2. | #2

    Pour les conditions, il est bon d’ajouter ces deux petites choses :

    1/ Tester la variable sur sa saleur et son type avec l’opérateur de comparaison ===
    2/ Placer les données constantes à gauche et les variables à droite pour éviter tout risque d’affectation plutôt que de comparaison.

    Ce qui donne :

    $cinq = 5;
    if(5 === $cinq)
    {
    doSomething();
    }

    Concernant les commentaires, je préfère de loin énumérer les types des paramètres de la manière que dans les classes du ZF, à savoir :

    /**
    * Fonction qui calcule le nombre de torchons et de serviettes
    *
    * @param mixed|resource $hConn
    * @return int|null
    * @throws Exception
    */

    Enfin, vous parlez des noms de fonctions mais il y’a aussi les noms de classes que l’on peut écrire soit en Upper Camel Case (comme dans Symfony) soit en Upper Camel Case avec l’underscore comme séparateur de mots (comme dans ZF). Ce qui donne :

    – MyPersonalFrontController
    – My_Personal_Front_Controller

    ++

    Hugo.

    PS : je suis actuellement entrain de rédiger pour Apprendre-PHP un dossier complet sur ces bonnes pratiques de développement PHP. A paraître dans les jours prochains ;)

  1. No trackbacks yet.