Entenda Melhor NOWDOC e HEREDOC no PHP

banner php

O PHP possui algumas maneiras de se trabalhar com textos longos e que possuem quebras de linhas, entre elas temos o formato NOWDOC e HEREDOC que vamos mostrar aqui.

Primeiro veja esse exemplo usando concatenação:

$var = 'SELECT Orders.OrderID, Customers.CustomerName, Orders.OrderDate ' . 
'FROM Orders ' . 
'INNER JOIN Customers' . 
'ON Orders.CustomerID=Customers.CustomerID';

Com NOWDOC podemos simplificar a escrita dessa string de maneira bastante elegante e legível, observe:

$var = <<<'MEUTEXTO' 
SELECT Orders.OrderID, Customers.CustomerName, Orders.OrderDate
FROM Orders
INNER JOIN Customers
ON Orders.CustomerID=Customers.CustomerID
MEUTEXTO;

Essa maneira seria equivalente as aspas simples do PHP, que neste caso ficaria assim:

$var = 'SELECT Orders.OrderID, Customers.CustomerName, Orders.OrderDate
FROM Orders
INNER JOIN Customers
ON Orders.CustomerID=Customers.CustomerID';

Vale lembrar que com NOWDOC tudo será exibido como texto puro inclusive variáveis, veja o exemplo abaixo:

$cor = 'preto';
$var = <<<'MEUTEXTO' 
A cor do café é $cor
MEUTEXTO;
// saída
// A cor do café é $cor

Caso você precise que as variáveis sejam interpretadas então é possível usar o HEREDOC que seria o equivalente a aspas duplas, para usa-lo basta retirar as aspas simples do seu bloco HEREDOC, veja abaixo:

$cor = 'preto';
$var = <<<MEUTEXTO
A cor do café é $cor
MEUTEXTO;
// saída
// A cor do café é preto

Apesar dessa pequena diferença entre interpretar e não interpretar variáveis ambos (NOWDOC e HEREDOC) seguem as mesmas regras, um ponto importante em que devemos ficar atentos é que a tag de fechamento do bloco deve SEMPRE ser a primeira instrução da linha e não pode conter espaços, tab, nem indentado, caso contrário o PHP não encontrará o final texto e continuará procurando pelo identificador de fechamento.