Le problème de l'optionalité des accolades dans les conditions en PHP
Bien que PHP permette les raccourcis mentionnés ci-dessus avec les accolades, je ne recommande pas de le faire en général, car c'est une source d'erreurs difficiles à déceler.
Prenons par exemple le code suivant :
<?php
$test = 3;
if ($test > 0)
echo $test;
?>
Supposons maintenant que nous décidions, si la
condition est remplie, de faire également un second
echo :
<?php
$test = 3;
if ($test > 0)
echo $test;
echo '+++';
?>
Cependant, sans les accolades, seule la première instruction se trouve à l'intérieur de la condition, c'est-à-dire que la première instruction s'exécutera si la condition est vraie, et la seconde - toujours.
En fait, notre code est équivalent à celui-ci :
<?php
$test = 3;
if ($test > 0) {
echo $test;
}
echo '+++'; // cette ligne s'est retrouvée en dehors de la condition
?>
Alors que nous souhaiterions un code comme celui-ci :
<?php
$test = 3;
if ($test > 0) {
echo $test;
echo '+++'; // cette ligne est à l'intérieur de la condition
}
?>
C'est pourquoi il est recommandé de toujours utiliser les accolades, afin de ne pas tomber ce genre d'erreurs.
Sans exécuter le code, déterminez ce qui sera affiché à l'écran :
<?php
$num = 5;
if ($num === 5)
echo $num;
echo '+++';
?>
Sans exécuter le code, déterminez ce qui sera affiché à l'écran :
<?php
$num = 0;
if ($num === 5)
echo $num;
echo '+++';
?>
Sans exécuter le code, déterminez ce qui sera affiché à l'écran :
<?php
$num = 0;
if ($num === 5)
echo $num;
echo '---';
echo '+++';
?>