Tatizo la Hiari ya Mabano Yenye Mivizio katika Masharti ya PHP
Licha ya ukweli kwamba PHP inaruhusu ufupisho ulioonyeshwa hapo juu na mabano yenye mivizio, kwa ujumla mimi sihimizi kufanya hivyo, kwani hii ni chanzo cha makosa yasiyoonekana kwa urahisi.
Hebu kwa mfona iwe na msimbo ufuatao:
<?php
$test = 3;
if ($test > 0)
echo $test;
?>
Hebu sasa tukaamua katika tukio ambalo
kipimo kinatimilika, kufanya pia
echo ya pili:
<?php
$test = 3;
if ($test > 0)
echo $test;
echo '+++';
?>
Hata hivyo, bila mabano yenye mivizio ndani ya kipimo kiko tu uchapishaji wa kwanza, yaani uchapishaji wa kwanza utafanya kazi wakati kipimo kinatimilika, na wa pili - kila wakati.
Kwa kweli msimbo wetu ni sawa na ufuatao:
<?php
$test = 3;
if ($test > 0) {
echo $test;
}
echo '+++'; // mstari huu umekuwa nje ya kipimo
?>
Na sisi tungependa msimbo kama huu:
<?php
$test = 3;
if ($test > 0) {
echo $test;
echo '+++'; // mstari huu uko ndani ya kipimo
}
?>
Hii ndiyo sababu inashauriwa kila wakati kufanya kuweka mabano yenye mivizio, ili kuepuka kukumbwa na makosa ya aina hii.
Bila kukimbiza msimbo, amua, nini kitachapishwa kwenye skrini:
<?php
$num = 5;
if ($num === 5)
echo $num;
echo '+++';
?>
Bila kukimbiza msimbo, amua, nini kitachapishwa kwenye skrini:
<?php
$num = 0;
if ($num === 5)
echo $num;
echo '+++';
?>
Bila kukimbiza msimbo, amua, nini kitachapishwa kwenye skrini:
<?php
$num = 0;
if ($num === 5)
echo $num;
echo '---';
echo '+++';
?>