Oui, c'est vrai. Voici une petite astuce qui repose sur l'évaluation des courts-circuits. Parfois, vous pouvez avoir une petite instruction if que vous préféreriez écrire comme un ternaire, par ex :
if ($confirmed) {
$answer = 'Yes';
} else {
$answer = 'No';
}
Peut être réécrit comme :
$answer = $confirmed ? 'Yes' : 'No';
Mais alors, que se passe-t-il si le bloc oui nécessite également l'exécution d'une fonction ?
if ($confirmed) {
do_something();
$answer = 'Yes';
} else {
$answer = 'No';
}
La réécriture en ternaire est toujours possible, à cause de l'évaluation en court-circuit :
$answer = $confirmed && (do_something() || true) ? 'Yes' : 'No';
Dans ce cas, l'expression (do_something() || true) ne modifie en rien le résultat global du ternaire, mais garantit que la condition ternaire demeure true
en ignorant la valeur de retour de do_something()
.