Heredoc and nowdoc let you write long text easily in PHP without lots of quotes or dots.
Heredoc and nowdoc syntax in PHP
Introduction
Syntax
PHP
<<<'LABEL'
Your text here
LABEL;Heredoc starts with <<<LABEL and ends with LABEL; on a new line.
Nowdoc is like heredoc but uses single quotes: <<<'LABEL'.
Examples
PHP
<<<'EOD' This is nowdoc text. Variables like $var are not replaced. EOD;
$name will be replaced with their values.PHP
<<<EOT Hello $name! Welcome to heredoc. EOT;
PHP
$text = <<<TEXT This is heredoc. It can span multiple lines. TEXT;
Sample Program
This program shows heredoc replacing the variable $name with "Alice" and nowdoc printing the text exactly as is.
PHP
<?php $name = "Alice"; $heredoc = <<<HEREDOC Hello, $name! This is heredoc syntax. HEREDOC; $nowdoc = <<<'NOWDOC' Hello, $name! This is nowdoc syntax. Variables are not parsed here. NOWDOC; echo $heredoc; echo $nowdoc;
Important Notes
The closing label must be at the start of the line with no spaces or tabs before it.
Heredoc acts like double quotes, so variables and escape sequences work.
Nowdoc acts like single quotes, so no variable parsing or escape sequences.
Summary
Heredoc and nowdoc help write long strings easily in PHP.
Use heredoc to include variables inside the text.
Use nowdoc to keep text exactly as typed, no variable replacement.
Practice
1. What is the main difference between
heredoc and nowdoc syntax in PHP?easy
Solution
Step 1: Understand heredoc behavior
Heredoc syntax allows variables inside the string to be replaced with their values.Step 2: Understand nowdoc behavior
Nowdoc syntax treats the string as plain text, so variables are not replaced.Final Answer:
Heredoc parses variables inside the string, nowdoc does not. -> Option DQuick Check:
Heredoc = variable parsing, Nowdoc = no parsing [OK]
Hint: Remember: heredoc = variables parsed, nowdoc = raw text [OK]
Common Mistakes:
- Thinking nowdoc parses variables like heredoc
- Confusing which syntax uses single quotes
- Assuming both behave the same with variables
2. Which of the following is the correct syntax to start a nowdoc string in PHP?
easy
Solution
Step 1: Identify nowdoc syntax start
Nowdoc starts with <<< followed by a single-quoted identifier, like <<<'EOD'.Step 2: Compare options
<<<'EOD' uses single quotes correctly; others use no quotes or double quotes which are for heredoc or invalid.Final Answer:
<<<'EOD' -> Option AQuick Check:
Nowdoc uses single quotes around identifier [OK]
Hint: Nowdoc always uses single quotes around the identifier [OK]
Common Mistakes:
- Using double quotes or no quotes for nowdoc start
- Adding semicolon after the identifier
- Confusing heredoc and nowdoc start syntax
3. What will be the output of the following PHP code?
$name = "Alice"; $text = <<
medium
Solution
Step 1: Understand heredoc variable parsing
The heredoc syntax replaces variables like $name with their values inside the string.Step 2: Apply variable value
$name is "Alice", so the output becomes "Hello, Alice!".Final Answer:
Hello, Alice! -> Option BQuick Check:
Heredoc parses variables = Hello, Alice! [OK]
Hint: Heredoc replaces variables with their values automatically [OK]
Common Mistakes:
- Thinking heredoc outputs variable names literally
- Confusing heredoc with nowdoc behavior
- Expecting syntax error due to variable inside heredoc
4. Identify the error in this PHP code snippet using nowdoc:
$text = <<<'EOD'\ This is a nowdoc string. EOD; echo $text;
medium
Solution
Step 1: Check nowdoc start syntax
Nowdoc start must be followed immediately by a newline, no extra characters like backslash after the identifier.Step 2: Identify error in code
The code has a backslash after <<<'EOD' which is invalid syntax; it should be just <<<'EOD' followed by newline.Final Answer:
Extra backslash after nowdoc start identifier -> Option CQuick Check:
Nowdoc start line ends immediately after identifier, no extra chars [OK]
Hint: Nowdoc start line ends immediately after identifier, no extra chars [OK]
Common Mistakes:
- Adding backslash or semicolon after nowdoc start
- Using double quotes instead of single quotes
- Misplacing closing identifier
5. You want to store a multi-line SQL query in a PHP variable without parsing variables inside it. Which syntax should you use and why?
$query = ??? SELECT * FROM users WHERE name = '$name'; ???;
hard
Solution
Step 1: Understand requirement
The query should keep variables like $name as plain text, not replaced by PHP values.Step 2: Choose correct syntax
Nowdoc syntax keeps the string exactly as typed, so variables are not parsed, perfect for raw SQL queries.Final Answer:
Use nowdoc to keep the query text exactly as typed, no variable parsing. -> Option AQuick Check:
Nowdoc = raw text, no variable parsing [OK]
Hint: Use nowdoc for raw multi-line strings without variable parsing [OK]
Common Mistakes:
- Using heredoc and expecting variables not to parse
- Trying to escape variables inside double quotes unnecessarily
- Concatenating strings instead of using nowdoc for raw text
Recommended
Ready to prove it?
Pass the test and this pattern moves unknown
10 questions ~5 mineasy hard
