Problém nepovinnosti zložených zátvoriek v podmienkach v PHP
Napriek tomu, že PHP umožňuje vyššie uvedené skratky so zloženými zátvorkami, ja to vo všeobecnosti neodporúčam, pretože ide o živnú pôdu pre ťažko zachytiteľné chyby.
Majme napríklad nasledujúci kód:
<?php
$test = 3;
if ($test > 0)
echo $test;
?>
Povedzme, že sme sa teraz rozhodli, že v prípade, ak
je podmienka splnená, urobíme aj druhý
echo:
<?php
$test = 3;
if ($test > 0)
echo $test;
echo '+++';
?>
Avšak, bez zložených zátvoriek je vnútri podmienky len prvý výstup, to znamená, že prvý výstup sa spustí pri splnenej podmienke, a druhý - vždy.
Náš kód je v skutočnosti ekvivalentný tomuto:
<?php
$test = 3;
if ($test > 0) {
echo $test;
}
echo '+++'; // tento riadok sa ocitol mimo podmienky
?>
Ale my by sme chceli takýto kód:
<?php
$test = 3;
if ($test > 0) {
echo $test;
echo '+++'; // tento riadok je vnútri podmienky
}
?>
Práve preto sa odporúča vždy používať zložené zátvorky, aby ste nepadli do chýb tohto druhu.
Bez spustenia kódu určite, čo sa vypíše na obrazovku:
<?php
$num = 5;
if ($num === 5)
echo $num;
echo '+++';
?>
Bez spustenia kódu určite, čo sa vypíše na obrazovku:
<?php
$num = 0;
if ($num === 5)
echo $num;
echo '+++';
?>
Bez spustenia kódu určite, čo sa vypíše na obrazovku:
<?php
$num = 0;
if ($num === 5)
echo $num;
echo '---';
echo '+++';
?>