heredoc e nowdoc – tratamento de strings com PHP

heredoc e nowdoc

Exemplo de utilização do heredoc

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:

  1. Praticidade
  2. Fácil leitura
  3. 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.

Tenha todo o desempenho para o seu site com a Hospedagem Cloud DialHost. Servidores em cloud prontos para receber sites em PHP. Saiba Mais ou veja nossos produtos.

 

Felipe Moraes
Felipe Moraes

Desde pequeno eu adorei tecnologia e este sentimento me fez estudar e trabalhar com desenvolvimento, design de interfaces e interação. Esta vontade de melhorar e aprender com a tecnologia me fez estar aqui na DialHost desde 2012.

Comentários

Comentários ofensivos serão moderados.

Deixe uma resposta

O seu endereço de e-mail não será publicado. Campos obrigatórios são marcados com *