O problema da opcionalidade das chaves em condições no PHP
Apesar de o PHP permitir as abreviações mostradas acima sem chaves, eu, de modo geral, não recomendo fazer isso, pois isso é um criadouro de erros difíceis de detectar.
Suponha, por exemplo, o seguinte código:
<?php
$test = 3;
if ($test > 0)
echo $test;
?>
Suponha agora que decidimos, caso a condição
seja atendida, fazer também um segundo
echo:
<?php
$test = 3;
if ($test > 0)
echo $test;
echo '+++';
?>
No entanto, sem as chaves, apenas a primeira impressão está dentro da condição, ou seja, a primeira impressão será executada se a condição for verdadeira, e a segunda - sempre.
Na prática, nosso código é equivalente a este:
<?php
$test = 3;
if ($test > 0) {
echo $test;
}
echo '+++'; // esta linha ficou fora da condição
?>
E nós gostaríamos deste código:
<?php
$test = 3;
if ($test > 0) {
echo $test;
echo '+++'; // esta linha está dentro da condição
}
?>
É por isso que é recomendável sempre utilizar chaves, para não cair nesse tipo de erro.
Sem executar o código, determine o que será exibido na tela:
<?php
$num = 5;
if ($num === 5)
echo $num;
echo '+++';
?>
Sem executar o código, determine o que será exibido na tela:
<?php
$num = 0;
if ($num === 5)
echo $num;
echo '+++';
?>
Sem executar o código, determine o que será exibido na tela:
<?php
$num = 0;
if ($num === 5)
echo $num;
echo '---';
echo '+++';
?>