
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.



