Hoje despedimos da série de posts sobre tratamento de strings com PHP mostrando dois comandos que auxiliam bastante, principalmente na leitura do código programado. Estou falando do heredoc e do nowdoc. Estes dois comandos são formas de representação de strings, assim como os delimitadores de aspas simples e duplas, mais comumente utilizado.
Mas, por que utilizá-los ao invés das tão práticas aspas? Posso definir sua utilidade por 3 motivos:
- Praticidade
- Fácil leitura
- Fácil manutenção
O que é e como usar o heredoc
O heredoc permite você trabalhar com blocos de textos maiores sem se preocupar em escapar aspas duplas ou simples. Isto porque ele utiliza um demarcador “tagueado” identificando o começo e no final de cada string. Ele, assim como a aspas duplas, permite que você trabalhe com variáveis dentro da string. O heredoc irá interpretar a varíavel perfeitamente, sem concatenações e etc.
Para utilizá-lo você inicia o bloco de texto com uma sequência de três sinais de menor e então identifique o bloco com um nome qualquer, <<<html, por exemplo. A partir daí tudo que você escrever será considerado como um string. Veja o exemplo abaixo:
<!DOCTYPE html> <html> <head> <meta charset="utf-8"> <meta http-equiv="X-UA-Compatible" content="IE=edge"> <title></title> <link rel="stylesheet" href=""> </head> <body> <?php $seu_nome = "Felipe Moraes"; $endereco = "R. Josefina alves, 45, Maceió, AL."; //Este seria o código com aspas duplas $html = "<div id=\"ola\"> <p>Olá {$seu_nome},</p> <p>Que tal visitar a gente em nossa sede: {$endereco}?</p> </div>"; echo "<h2>com aspas:</h2>".$html; //Este seria o código com heredoc $html = <<<HTML <div id="ola"> <p>Olá {$seu_nome},</p> <p>Que tal visitar a gente em nossa sede: {$endereco}?</p> </div> HTML; echo "<h2>com heredoc:</h2>".$html; ?> </body> </html>
Alguns detalhes que é preciso saber ao utilizar o heredoc é que caso necessite do carácter $ você precisará escapá-lo já que o heredoc identifica variáveis. Outra coisa é que para finalizar o bloco de texto você deve repetir o nome que identifica o heredoc na linha abaixo do texto. E você não deve ser indentar a linha de término para que tudo funcione perfeitamente.
Utilizei também algumas chaves para identificar as variáveis. Isto não é obrigatório, mas, auxilia na leitura do código e como este é um dos motivos de se utilizar o heredoc, vamos fazer direito.
E agora o nowdoc
O nowdoc tem utilização bem semelhante ao heredoc, porém, ele não consegue interpretar variáveis ou caracteres de controle. Este comando é compatível a partir do php 5.3. Para utilizá-lo segue a mesma lógica, com um pequeno detalhe, aqui o identificador inicial deve ter aspas simples, <<<‘HTML’. Veja o exemplo:
<!DOCTYPE html> <html> <head> <meta charset="utf-8"> </head> <body> <?php //Este seria o código com aspas simples $html = '<div id=\'ola\'> <p>Olá Felipe,</p> <p>Que tal vir comer um queijo com a gente?</p> </div>'; echo "<h2>com aspas:</h2>".$html; //Este seria o código com nowdoc $html = <<<'HTML' <div id="ola"> <p>Olá Felipe,</p> <p>Que tal vir comer um queijo com a gente?</p> </div> HTML; echo "<h2>com heredoc:</h2>".$html; ?> </body> </html>
É possível utilizar o nowdoc para incluir um código PHP dentro do seu código php, assim você mantém a organização sem que nenhum código seja executado. Repare também que apesar do identificador inicial vir com aspas simples o final não necessita.
Concluindo, estas duas formas são muito amigáveis para trabalhar com blocos de textos grandes e que envolvem código e texto. Não que eles substituam as boas e velhas aspas simples e duplas, ainda utilizaremos elas muitas vezes para blocos pequenos e simples. Mas, sem dúvida nenhuma trabalhar com heredoc ou nowdoc torna a leitura e escrita de uma string de códigos extensa, muito mais simples.