13

I'm new to PHP and don't understand what the point of <<<_END is. Could someone please explain when this should be used? I've looked at various examples and they all seem to have HTML embedded within them. But I can use HTML without the <<<_END tags, so why should I use them? I tried searching the manual, but I keep finding the end() method for arrays.

Skoder
  • 3,983
  • 11
  • 46
  • 73

5 Answers5

17

It's the start of a heredoc. you can do:

$data = <<< _END

You can write anything you want in between the start and end

_END;

_END can be just about anything. You could put EOF or STUFF. as long as you use the same thing at the start and the finish.

Mitch Dempsey
  • 38,725
  • 6
  • 68
  • 74
3

This signifies the beginning of a heredoc (a multi-line string that allows you to use quotation marks in the middle, unescaped) that ends when you encounter the _END

It can be useful to define HTML in one of these if the goal is to assign it to a variable or pass it to a function rather than printing it to the web server immediately.

Ken Bloom
  • 57,498
  • 14
  • 111
  • 168
2

That syntax is called heredoc

<<<_END
some text
_END

Basically, it's a way of writing a string without worrying about escaping quotes and so on.

As you've mentioned, it doesn't really provide a lot of benefit over other string formats - although, it does mean you can write a block of HTML without escaping out of PHP with ?>

It also isn't too popular as its use generally goes against the practice of seperating content from logic by embedding the content in the middle of your script.

HorusKol
  • 8,375
  • 10
  • 51
  • 92
1

Does this help? http://www.php.net/manual/en/language.types.string.php#language.types.string.syntax.heredoc

It allows you to echo out a block of text (just the same as with echo "words";), but without using the beginning/ending quotes, and without having to escape contained double quotes. Read the manual link above for more detail.

JakeParis
  • 11,056
  • 3
  • 42
  • 65
1

It's a heredoc. It's just a way of defining a string.

Chuck
  • 234,037
  • 30
  • 302
  • 389