php

/ Tutoriais

Fechar ou não as TAGs PHP?

O fechamento das TAGs PHP é opcional. Por quê? Devemos fechá-las ou não?

Alguns de vocês  já devem ter percebido, em códigos baixados da internet, que muitos desenvolvedores não fecham as TAGs PHP “<?php”. Em um primeiro momento isso pode parecer uma prática errada e que ocasionará até mesmo erro na execução do script. Mas isso não é verdade.

Em arquivos que possuem apenas código PHP o fechamento da tag é opcional. Aliás, considero que nesses casos a TAG php não deve ser fechada, pois assim você evita a inserção acidental de uma quebra de linha na resposta PHP gerada.

Como assim?

Muitos editores de texto inserem automaticamente uma quebra de linha ao fim do arquivo quando você o salva. Ou mesmo o desenvolvedor, acidentalmente dá um “ENTER” após fechar a tag PHP (?>). Essa quebra de linha será enviada como resposta ao cliente. É como se você acrescentasse um <?php echo “\n”;?>

Sim, mas e daí?

Como sabemos, após enviar uma resposta ao cliente não podemos adicionar/alterar nenhum elemento ao cabeçalho HTTP da resposta (o famoso erro Cannot modify header information – headers already sent, se não sabe o que é isso veja Erro PHP: Cannot modify header information – headers already sent). Por exemplo, se você incluir o arquivo que possui a quebra de linha acidental através de um comando require() ou include() e você tentar alterar uma variável de sessão ou usar o comando header() você obterá o erro. E o pior é que se você inclui muitos arquivos, ou arquivos que incluem arquivos (como em um framework) você terá dificuldade em identificar qual arquivo está gerando essa quebra de linha.

Por isso, minha dica é: em arquivos PHP puro, como classes e bibliotecas não feche as TAGs PHP!

Um grande abraço e qualquer dúvida é só postar!

 



Arivan Bastos

Analista de sistemas, desenvolvedor Web e de games. Possui domínio de PHP, SQL e ActionScript 3. Possui conhecimentos avançados em Starling Framework, Corona SDK e Yii Framework. Atua na Virtualize na criação de sites, desenvolvimento de jogos, desenvolvimento de aplicativos mobile e desenvolvimento de aplicativos para redes sociais.