Como sabemos, todos os caracteres que estão fora das TAGS de abertura e fechamento do PHP “<?php ?>” são copiados pelo interpretador e enviados para a saída padrão diretamente. Incluindo caracteres de nova linha. Por padrão a maioria dos navegadores ignora esses caracteres, pois eles não fazem parte da semântica do HTML. Porém, devemos lembrar que esse caractere também é utilizado na resposta de requisições HTTP geradas pelo WebServer e serve para separar o header do restante dos dados. Portanto a saída de um caractere de nova linha antes de todos os cabeçalhos terem sido escritos poderá causar problemas.
Como quando precisamos alterar o header por exemplo, sabemos que isso deve ser feito antes de qualquer saída ter sido enviada ao browser. Caso contrário ele irá gerar um erro como esse:
Cannot send session cookie - headers already sent by (output started a....
Pois os cabeçalhos já haviam sido escritos.
Caracteres de nova linha após a tag de fechamento "?>" de arquivos incluídos com os comandos include ou require também podem gerar esse problema. Para ajudar a amenizar o problema, o parser elimina automaticamente o primeiro caractere de nova linha após a tag "?>". Essa regra também ajuda a lidar com alguns editores que acrescentam automaticamente uma nova linha no final do arquivo.
Uma maneira fácil de prevenir outputs indesejados é omitir a tag the fechamento do final do arquivo php, que o analisador (parser) considera isto perfeitamente legal.
Referências:
php|architect’s Zend PHP 5 Certification Guide. David Shafik and Ben Ramsey.
Como quando precisamos alterar o header por exemplo, sabemos que isso deve ser feito antes de qualquer saída ter sido enviada ao browser. Caso contrário ele irá gerar um erro como esse:
Cannot send session cookie - headers already sent by (output started a....
Pois os cabeçalhos já haviam sido escritos.
Caracteres de nova linha após a tag de fechamento "?>" de arquivos incluídos com os comandos include ou require também podem gerar esse problema. Para ajudar a amenizar o problema, o parser elimina automaticamente o primeiro caractere de nova linha após a tag "?>". Essa regra também ajuda a lidar com alguns editores que acrescentam automaticamente uma nova linha no final do arquivo.
Uma maneira fácil de prevenir outputs indesejados é omitir a tag the fechamento do final do arquivo php, que o analisador (parser) considera isto perfeitamente legal.
Referências:
php|architect’s Zend PHP 5 Certification Guide. David Shafik and Ben Ramsey.
Comentários
Postar um comentário
Deixe aqui sua opinião ou dúvida: