PHP:n if-ehtojen valinnaisten aaltosulkeiden ongelma
Vaikka PHP sallii yllä näytetyt lyhennykset ilman aaltosulkeita, en yleisesti ottaen suosittele niin tekemään, sillä ne ovat vaikeasti havaittavien virheiden pesä.
Oletetaan esimerkiksi, että on seuraava koodi:
<?php
$test = 3;
if ($test > 0)
echo $test;
?>
Oletetaan nyt, että päätimme siinä tapauksessa, jos
ehto täyttyy, tehdä myös toisen
echo:n:
<?php
$test = 3;
if ($test > 0)
echo $test;
echo '+++';
?>
Kuitenkin, ilman aaltosulkeita ehdon sisällä on vain ensimmäinen tulostus, eli ensimmäinen tulostus toimii, kun ehto on tosi, mutta toinen - aina.
Käytännössä koodimme vastaa tällaista:
<?php
$test = 3;
if ($test > 0) {
echo $test;
}
echo '+++'; // tämä rivi on ehdon ulkopuolella
?>
Mutta me halusimme tällaista koodia:
<?php
$test = 3;
if ($test > 0) {
echo $test;
echo '+++'; // tämä rivi on ehdon sisällä
}
?>
Tästä syystä on suositeltavaa aina suorittaa aaltosulkeiden asettaminen, jotta ei joudu tällaiseen virheeseen.
Päättelemällä (ajaamatta koodia), mitä ruudulle tulostetaan:
<?php
$num = 5;
if ($num === 5)
echo $num;
echo '+++';
?>
Päättelemällä (ajaamatta koodia), mitä ruudulle tulostetaan:
<?php
$num = 0;
if ($num === 5)
echo $num;
echo '+++';
?>
Päättelemällä (ajaamatta koodia), mitä ruudulle tulostetaan:
<?php
$num = 0;
if ($num === 5)
echo $num;
echo '---';
echo '+++';
?>