Reputation: 433
I was wondering whether:
$foo = <<< EOT
Hello, World!
EOT;
is just as valid as
$foo = <<<EOT
Hello, World!
EOT;
and in particular whether this is true in all versions of PHP (or just the latest ones).
I wonder because I want to know whether a space between the <<<
and first EOT
identifier is syntactically valid. For instance, my PHP interpreter 5.3.10 runs this correctly but
my vim text editor does not syntax-highlight the heredoc in the same way if there is a
space between <<<
and EOT
(the EOT
identifier is colored white instead of purple).
So what is the deal here? Are both legal in all versions of PHP or not?
Upvotes: 4
Views: 11198
Reputation: 75609
Tabs and spaces are allowed, and apparently so are quotes:
<ST_IN_SCRIPTING>b?"<<<"{TABS_AND_SPACES}({LABEL}|([']{LABEL}['])|(["]{LABEL}["])){NEWLINE} {
Edit:
Upvotes: 5
Reputation: 437376
The manual says (emphasis mine) that
A third way to delimit strings is the heredoc syntax: <<<. After this operator, an identifier is provided, then a newline.
To me this means that the space is optional (and will always be optional), since in the language as a whole identifiers can be separated from neighboring tokens by any amount of whitespace -- including none.
Upvotes: 3
Reputation: 418
No, you should not provide a space between the <<< and the identifier. As specified in the PHP documentation:
(...) the identifier must follow the same naming rules as any other label in PHP: it must contain only alphanumeric characters and underscores, and must start with a non-digit character or underscore.
Source: http://www.php.net/manual/en/language.types.string.php#language.types.string.syntax.heredoc
Upvotes: 0