É possível omitir o ponto e vírgula final em uma tag.
Exemplo:
<table>
<th><td>Name</td><td>Email</td>
<? foreach ($receivers as $receiver): ?>
<tr>
<td><?= $receiver->name ?></td>
<td><?= $recevier->email ?></td>
</tr>
<? endforeach ?>
</table>
Observe o <? endforeach ?>
sem ponto e vírgula depois endforeach
. A documentação do PHP diz:
A tag de fechamento de um bloco de código PHP implica automaticamente um ponto e vírgula; você não precisa ter um ponto e vírgula finalizando a última linha de um bloco PHP.
Por que estou abordando esse assunto?
Atualmente eu e um amigo meu trabalhamos em um projeto PHP proprietário com MVC (model-view-controller). Para a visualização, avaliei alguns mecanismos de modelo PHP como Smarty, Bigode e até projetei meu próprio mecanismo de modelo doméstico. Mas quando eu li que o PHP é um mecanismo de modelo em si, algo foi " clique " na minha cabeça. Por que não concordar com a equipe em usar um subconjunto limitado do PHP como um mecanismo de modelo? E tendo muitas revisões de código para manter as regras?
E esse subconjunto pode ficar assim:
- Use tags apenas de curto
<?
,<?=
e?>
- Use apenas expressões simples sem efeitos colaterais, especialmente não atribua variáveis
- Use apenas
if
,foreach
einclude
para as demonstrações - Use apenas a sintaxe alternativa para estruturas de controle
- Tenha apenas uma instrução em uma tag cada
Este é o contexto em que estamos omitindo o ponto e vírgula final, ou seja <? endforeach ?>
, para <? endif ?>
e <? include("list-contents.php") ?>
.
No entanto, eu sempre leio que omitir o ponto e vírgula é uma má prática. Por quê? É uma má prática?
Estou feliz que o PHP permita omitir o ponto-e-vírgula final, pois isso minimiza a confusão visual nos arquivos de modelo. Eles devem se parecer principalmente com arquivos HTML com apenas pequenos fragmentos de PHP aqui e ali. O exemplo acima é o que estou buscando.
O que você pensa sobre isso? Se você é contra: por quê? Se você apoia: Por que seria uma boa ideia? O que devo dizer ao meu parceiro se ele está me referindo algum texto contra a omissão do ponto e vírgula?
Faça backup de sua opinião com fatos, referências ou sua própria experiência.