A kapcsos zárójelek opcionális voltának problémája az if feltételekben PHP-ben
Annak ellenére, hogy a PHP megengedi a fent bemutatott rövidítéseket a kapcsos zárójelekkel, én általában véve nem ajánlom ezt megtenni, mivel ez nehezen felismerhető hibák forrása.
Legyen például a következő kód:
<?php
$test = 3;
if ($test > 0)
echo $test;
?>
Tegyük fel, hogy most úgy döntöttünk, hogy abban az esetben, ha
a feltétel teljesül, végrehajtunk egy második
echo-ot is:
<?php
$test = 3;
if ($test > 0)
echo $test;
echo '+++';
?>
Azonban kapcsos zárójelek nélkül csak az első kiírás tartozik a feltételhez, vagyis az első kiírás akkor fog lefutni, ha a feltétel igaz, a második pedig - mindig.
Valójában a kódunk ekvivalens ezzel:
<?php
$test = 3;
if ($test > 0) {
echo $test;
}
echo '+++'; // ez a sor a feltételen kívülre került
?>
Mi viszont valójában ezt a kódot szerettük volna:
<?php
$test = 3;
if ($test > 0) {
echo $test;
echo '+++'; // ez a sor a feltételen belül van
}
?>
Pontosan ezért ajánlott mindig elhelyezni a kapcsos zárójeleket, hogy ne kerüljünk ilyen jellegű hibákba.
A kód futtatása nélkül határozza meg, mit ír ki a képernyőre:
<?php
$num = 5;
if ($num === 5)
echo $num;
echo '+++';
?>
A kód futtatása nélkül határozza meg, mit ír ki a képernyőre:
<?php
$num = 0;
if ($num === 5)
echo $num;
echo '+++';
?>
A kód futtatása nélkül határozza meg, mit ír ki a képernyőre:
<?php
$num = 0;
if ($num === 5)
echo $num;
echo '---';
echo '+++';
?>