
As sintaxes HEREDOC e NOWDOC ajudam a escrever blocos de texto extensos sem escapar aspas manualmente. A diferença principal é que HEREDOC interpreta variáveis, enquanto NOWDOC mantém tudo literal.
1. HEREDOC
$nome = 'Ennio';
$mensagem = <<<HTML
<h1>Olá, {$nome}</h1>
<p>Obrigado por acompanhar o blog!</p>
HTML;
- O identificador (
HTML) deve aparecer sozinho na última linha. - Pode interpolar variáveis e chamar funções
{$this->metodo()}.
2. NOWDOC
$sql = <<<'SQL'
SELECT * FROM users WHERE email = :email AND deleted_at IS NULL;
SQL;
- Usa aspas simples no identificador.
- Não expande variáveis, ideal para SQL e scripts shell.
3. Combinação com sprintf
$template = <<<'MD'
## %s
%s
MD;
$conteudo = sprintf($template, 'Checklist', '- Tests\n- Code review');
4. Em versões modernas do PHP
Desde o PHP 7.3 é permitido usar indentação:
$html = <<<HTML
<div>
<span>{$nome}</span>
</div>
HTML;
O interpretador remove o recuo mínimo automaticamente.
5. Quando usar cada um
| Situação | Sintaxe |
|---|---|
| Templates com variáveis | HEREDOC |
| Dumps literais, comandos shell, SQL | NOWDOC |
| Configurações compartilhadas | HEREDOC com include |
Adotar essas sintaxes torna o código mais legível e evita escapes confusos em strings multilinha.