Problema opționalității acoladelor în condiții în PHP
În ciuda faptului că PHP permite abrevierile arătate mai sus cu acolade, eu, în general, nu recomand să faceți acest lucru, deoarece este un focar de erori greu de depistat.
Să presupunem că există următorul cod:
<?php
$test = 3;
if ($test > 0)
echo $test;
?>
Să presupunem acum că am decis în cazul în care
condiția este îndeplinită, să facem și un al doilea
echo:
<?php
$test = 3;
if ($test > 0)
echo $test;
echo '+++';
?>
Cu toate acestea, fără acolade, în interiorul condiției se află doar prima afișare, adică prima afișare se va executa când condiția este adevărată, iar a doua - întotdeauna.
De fapt, codul nostru este echivalent cu acesta:
<?php
$test = 3;
if ($test > 0) {
echo $test;
}
echo '+++'; // această linie s-a dovedit a fi în afara condiției
?>
Însă noi am fi vrut acest cod:
<?php
$test = 3;
if ($test > 0) {
echo $test;
echo '+++'; // această linie este în interiorul condiției
}
?>
Tocmai de aceea este recomandat să faceți întotdeauna amplasarea acoladelor, pentru a nu cădea în astfel de erori.
Fără a rula codul, determinați ce va fi afișat pe ecran:
<?php
$num = 5;
if ($num === 5)
echo $num;
echo '+++';
?>
Fără a rula codul, determinați ce va fi afișat pe ecran:
<?php
$num = 0;
if ($num === 5)
echo $num;
echo '+++';
?>
Fără a rula codul, determinați ce va fi afișat pe ecran:
<?php
$num = 0;
if ($num === 5)
echo $num;
echo '---';
echo '+++';
?>