PHP tingimuste hõlmavate sulgude mittekohustuslikkuse probleem
Hoolimata asjaolust, et PHP lubab ülal näidatud lühendeid hõlmavate sulgudega, ma üldiselt ei soovita nii teha, kuna see on raskesti tabatavate vigade pesa.
Olgu näiteks järgmine kood:
<?php
$test = 3;
if ($test > 0)
echo $test;
?>
Oletame nüüd, et me otsustasime juhul, kui
tingimus on täidetud, teha ka teise
echo:
<?php
$test = 3;
if ($test > 0)
echo $test;
echo '+++';
?>
Siiski, ilma hõlmavate sulgudeta on tingimuse sees ainult esimene väljund, see tähendab, et esimene väljund käivitub õige tingimuse korral, aga teine - alati.
Tegelikult on meie kood samaväärne sellega:
<?php
$test = 3;
if ($test > 0) {
echo $test;
}
echo '+++'; // see rida osutus tingimuse väljapoole
?>
Aga me tahaksime sellist koodi:
<?php
$test = 3;
if ($test > 0) {
echo $test;
echo '+++'; // see rida on tingimuse sees
}
?>
Just seetõttu on soovitatav alati teha hõlmavate sulgude paigutus, et mitte sattuda sellistesse vigadesse.
Koodi käivitamata määrake, mis prinditakse ekraanile:
<?php
$num = 5;
if ($num === 5)
echo $num;
echo '+++';
?>
Koodi käivitamata määrake, mis prinditakse ekraanile:
<?php
$num = 0;
if ($num === 5)
echo $num;
echo '+++';
?>
Koodi käivitamata määrake, mis prinditakse ekraanile:
<?php
$num = 0;
if ($num === 5)
echo $num;
echo '---';
echo '+++';
?>