Amélioration de code : cas de if-else

langage PHP : if-else
Logo PHP

Récemment, dans des petits programmes en PHP, j’ai remarqué des mauvaises pratiques sur des concepts basiques en PHP. Dans l’article d’aujourd’hui, je vais parler du concept de if-else.

Je vais vous montrer deux cas de mauvaises pratiques, et la manière de les corriger.

Cas N°1 : Variable undefined

<?php
if(isset($_SESSION["sessiontype"])) {
    $type = $_SESSION["sessiontype"];
}
?>
<html>
    <head>
        <title>amélioration if-else</title>
    </head>
    <body>

        <form action="index.php.php"  method=post name="issue">
          <input type=text  size="40" name="type" value="<?php echo $type; ?>" />
        </form>

    </body>
</html>

Comme vous pouvez le voir, on teste l’existence de la variable $_SESSION[« sessiontype »], et on y assigne sa valeur dans la variable $type. Ensuite, on tente d’afficher cette variable $type dans un champ input.

Ce code sous-entend que la variable $_SESSION[« sessiontype »] doit exister dans tout les cas.
Mais malheureusement ce n’est pas le cas, et nous aurons le message d’erreur suivant : undefined index.

Pour éviter cette erreur, je peux conseiller d’ajouter un else, pour initialiser $type.
On peux même tenter une condition ternaire, dans notre cas.

<?php
session_start();
if(isset($_SESSION["sessiontype"])) {
    $type = $_SESSION["sessiontype"];
} else {
    $type = "";
}
<?php
$type = (isset($_SESSION["sessiontype"])) ? $_SESSION["sessiontype"] : "";

Il existe la possibilité d’initialiser la variable $type avant le if. Cela évite d’avoir le else.

<?php
$type = "";
if(isset($_SESSION["sessiontype"])) {
    $type = $_SESSION["sessiontype"];
}

Cas N°2 : condition vide

<?php
$image = "./images/filename.png";
if(file_exists($image)){
    //echo "exist:" .$image;
} else {
    system("c:/thumb.bat " . $vn);
}
?>

Dans ce deuxième cas, nous remarquons que le if est vide (le code du if est commenté). Toute la logique du code se situe dans le else.

La logique voudrait que l’on mette la condition inverse dans le if.
Il n’y aurait pas forcément de else.

<?php
$image = "./images/filename.png";
if(!file_exists($image)){
    system("c:/thumb.bat " . $vn);
}

Et vous, avez-vous déjà vu de mauvaises utilisations du if-else ?