问题
PHP's Heredoc examples always seem to use EOT (and sometimes EOD) as the seperating string, while it is actually possible to use any string here. This works:
$mystring = <<<EOT
Foo
Bar
Baz
EOT;
While this works as well:
$mystring = <<<MONKIES
Foo
Bar
Baz
MONKIES;
Does EOT actually stand for something and if so, what?
回答1:
It stands for "End Of Text".
回答2:
Actually end of text
would be ETX
– EOT
is end of transmission
.
Reference: ASCII - Wikipedia
回答3:
I prefer to go for the TRON reference and use 'EOL' (End of Line).
回答4:
Short answer
Probably End Of Text and End Of Data.
Long answer
The only ones who can tell you definitively what the acronyms mean are the authors of the original (and current) documentation. But based on an early version of the documentation which mentions "here doc text", I think one could plausibly assume that EOT is intended to mean End of Text.
Similarly, the current documentation makes a comparison between Nowdocs and SGML <![CDATA[ ]]>
sections, so a reasonable assumption would be that EOD stands for End Of Data.
Sure, there's a definition of EOT in the ASCII standard, but that refers to a single character 04
16 and this definition doesn't transfer to anything else unless explicitly stated. About the only thing we can learn from the ASCII standard in this regard is the encoding of the three letters E
, O
and T
.
This is all guesswork of course, but these are the only sensible explanations I can think of.
Personally, I prefer to avoid the whole issue by using a single underscore (<<<_
).
来源:https://stackoverflow.com/questions/5258533/heredoc-what-does-the-commonly-used-eot-actually-mean