Caracteres de nova linha no PHP

Como todos já sabemos, todos caracteres que estão fora das TAGS do PHP “<php ?>” são copiado pelo interpretador e enviados para a saída padrão diretamente. Até mesmo os caracteres de nova linha. Normalmente novas linhas são ignoradas pelo navegador para exibição, ou seja, eles não tem qualquer efeito. Porém esse caracter é utilizado na resposta de requisições HTTP geradas pelo WebServer como separador entre o header e restante dos dados.
Para exemplificar um dos problemas de quando trabalhos com headers, vamos utilizar o caso clássico de problemas com sessão:

Cannot send session cookie - headers already sent by (output started a....

Esse erro acontece, “header already sent by”, quando enviamos dados para o browser antes de algum header http. No casso do session. foram enviado dados antes da tentativa de registrar o cookie da sessão, na função session_start(). Caracteres de nova linha após a tag “?>” em arquivos .php, que são incluidos em sua aplicação através de include/require, podem ocasionar esta situação. Este é um erro que acontece com bastante frequencia.

Para ajudar a resolver esse problema, o primeiro caracter de nova linha após o fechamento da tag “?>” é automaticamente removido pelo parser. Essa regra do parser ajuda também a lidar com alguns editores de texto que adicionam automaticamente uma nova linha no final do arquivo.

Uma dica que eu recomendo e que ajuda a previnir essa situação é omitir a tag “?>” no final do arquivo php em arquivos que são incluídos na sua aplicação por include/require. Geralmente são os arquivos de “biblioteca”. É perfeitamente permitido pelo parser e irá minimizar de forma efetiva a possibilidade desse tipo de erro.

Please follow and like us:

Follow

Get every new post on this blog delivered to your Inbox.

Join other followers: