PHP sąlygų sakiniuose esančių garbanotųjų skliaustų neprivalomumo problema
Nepaisant to, kad PHP leidžia aukščiau parodytus sutrumpinimus su garbanaisiais skliaustais, aš apskritai nerekomenduoju taip daryti, nes tai yra sunkiai pastebimų klaidų šaltinis.
Tarkime, pavyzdžiui, yra toks kodas:
<?php
$test = 3;
if ($test > 0)
echo $test;
?>
Tarkime, kad dabar nusprendėme, jei
sąlyga tenkinama, atlikti ir antrą
echo:
<?php
$test = 3;
if ($test > 0)
echo $test;
echo '+++';
?>
Tačiau, be garbanųjų skliaustų, sąlygos viduje yra tik pirmasis išvedimas, tai yra, pirmasis išvedimas bus vykdomas esant teisingai sąlygai, o antrasis - visada.
Faktiškai mūsų kodas yra ekvivalentus šiam:
<?php
$test = 3;
if ($test > 0) {
echo $test;
}
echo '+++'; // ši eilutė pasirodė už sąlygos ribų
?>
O mes norėtume tokį kodą:
<?php
$test = 3;
if ($test > 0) {
echo $test;
echo '+++'; // ši eilutė yra sąlygos viduje
}
?>
Būtent todėl rekomenduojama visada išdėstyti garbanąsias skliaustus, kad nepatrukti į tokias klaidas.
Nepaleisdami kodo, nustatykite, kas bus atvaizduota ekrane:
<?php
$num = 5;
if ($num === 5)
echo $num;
echo '+++';
?>
Nepaleisdami kodo, nustatykite, kas bus atvaizduota ekrane:
<?php
$num = 0;
if ($num === 5)
echo $num;
echo '+++';
?>
Nepaleisdami kodo, nustatykite, kas bus atvaizduota ekrane:
<?php
$num = 0;
if ($num === 5)
echo $num;
echo '---';
echo '+++';
?>