Les bienfaits des tests de variable en PHP

J’ai fait ce billet pour deux raisons principales :

  1. avoir un coup de gueule auprès des personnes qui ne sont pas capable de mettre en place leur test de variables
  2. montrer quelques exemples simples pour éviter des erreurs Notice ou Warning en PHP.

Avant tout, la première chose à faire est d’effectuer ses développements avec le niveau le plus haut d’erreur E_ALL. Très souvent cela indique énormément d’erreur mais la contre partie est que l’on aura par la suite moins de problème d’erreur et de compréhension au niveau du code.

Premier exemple que je rencontre très régulièrement : la non initialisation d’une clé d’un tableau. Ce type d’erreur se voit par un Notice :

Notice: Undefined index ‘champ’ in ‘fichier.php’ on line 10

Ce type d’erreur est très simple à corriger. J’utilise pour ma part la fonction isset(). Cela donne le bout de code suivant :

if (isset($tableau['champ'])) {
traitement normal
} else {
on assigne une valeur par défaut

}

On peut appliquer le même type de traitement pour les données des variables $_GET, $_POST, …

Le second exemple concerne plus la sécurisation des données venant provenant des formulaires et / ou URL pour valider en utilisant les expressions régulières. Mais ce second exemple fera l’objet d’un prochain billet.

2 thoughts on “Les bienfaits des tests de variable en PHP

  1. Tonton

    Au lieu de ça
    if (isset($tableau[‘champ’])) {

    traitement normal

    } else {

    on assigne une valeur par défaut

    }

    Tu gagnerais du temps à assigner une valeur par défaut avant le traitement. Sinon tu as les opérateur ternaire.

    Reply
  2. olivier

    Je suis d’accord, cependant le cas que je présentais était plutôt pour les variables en POST, GET… J’aurais sans doute dû le préciser.

    Je n’aime pas vraiment les opérateurs ternaire, ces derniers peuvent rapidement devenir illisible. Enfin ce n’est que mon avis perso.

    Reply

Leave a Reply

Your email address will not be published. Required fields are marked *

This site uses Akismet to reduce spam. Learn how your comment data is processed.