히어도큐먼트는 더블쿼트를 사용하지않지만 더블쿼트로 싸인 문자열과 똑같이 동작하며 에스케이프 코드를 사용할 수도 있다.
히어도큐먼트 사용예
출력결과
히어도큐먼트는 PHP 4 에서 추가됨.
PHP 매뉴얼 링크 : http://www.php.net/manual/en/language.types.string.php
Heredoc
PHP 에서 문자열로 지정하는 방법중에 하나가 히어도큐먼트 구문 ("<<<") 이 있다.
어떤 ID(식별자) ( 와 그뒤로 이어지는 개행문자 ) 를
<<< 의 뒤에 지정하고 문자열을 넣은후 같은 ID(식별자) 를 닫는 의미 지정한다.
종단
ID(식별자) 는 해당 행의 맨처음 컬럼(열)에서 시작해야한다. 사용하는 식별자는 PHP 의 다른 라벨과 같이 명명규칙을 따라야 한다. 즉 ,
알파벳, 숫자 및 언더스코어를 사용하며 , 숫자가 아닌 문자 또는 언더스코어로 시작해야한다.
경고
:
종단 식별자가 있는 행은 세미콜론(;) 이외의 다른 문자를 포함해서는 안된다는 사실에 주의할것.
특히 식별자는 인덴트해서는 안되며 , 세미콜론 앞에 공백 및 탭을 넣어서는 안된다.
종단 식별자의 앞의 맨처음 문자는 사용하는 운영체제에서 정의한 개행문자이어야 한다. 예를 들어 Macintosh 에서는 \r 이며 , 맨 마지막 구분문자 ( 대개 그 뒤로 세미콜론이 옴)의 뒤에도 개행문자를 넣어야 할 필요가 있다.
종단 식별자가 있는 행은 세미콜론(;) 이외의 다른 문자를 포함해서는 안된다는 사실에 주의할것.
특히 식별자는 인덴트해서는 안되며 , 세미콜론 앞에 공백 및 탭을 넣어서는 안된다.
종단 식별자의 앞의 맨처음 문자는 사용하는 운영체제에서 정의한 개행문자이어야 한다. 예를 들어 Macintosh 에서는 \r 이며 , 맨 마지막 구분문자 ( 대개 그 뒤로 세미콜론이 옴)의 뒤에도 개행문자를 넣어야 할 필요가 있다.
이 규칙이 지켜지지 않으면 종단 식별자로 인식이 되지 않으며, PHP 는 계속해서 종단식별자를 찾게 된다. 적당한 종단 식별자를 찾을 수 없으면 스크립트의 맨 마지막에서 파싱에러가 발생한다.
히어도큐먼트구문을 클래스 멤버에 초기화해서 사용할 수 없다. nowdoc 을 사용할것.
틀린
예.
<?php
class foo {
public $bar = <<<EOT
bar
EOT;
}
?>
class foo {
public $bar = <<<EOT
bar
EOT;
}
?>
히어도큐먼트는 더블쿼트를 사용하지않지만 더블쿼트로 싸인 문자열과 똑같이 동작하며 에스케이프 코드를 사용할 수도 있다.
히어도큐먼트 사용예
<?php
$str = <<<EOD
Example of string
spanning multiple lines
using heredoc syntax.
EOD;
/* More complex example, with variables. */
class foo
{
var $foo;
var $bar;
function foo()
{
$this->foo = 'Foo';
$this->bar = array('Bar1', 'Bar2', 'Bar3');
}
}
$foo = new foo();
$name = 'MyName';
echo <<<EOT
My name is "$name". I am printing some $foo->foo.
Now, I am printing some {$foo->bar[1]}.
This should print a capital 'A': \x41
EOT;
?>
$str = <<<EOD
Example of string
spanning multiple lines
using heredoc syntax.
EOD;
/* More complex example, with variables. */
class foo
{
var $foo;
var $bar;
function foo()
{
$this->foo = 'Foo';
$this->bar = array('Bar1', 'Bar2', 'Bar3');
}
}
$foo = new foo();
$name = 'MyName';
echo <<<EOT
My name is "$name". I am printing some $foo->foo.
Now, I am printing some {$foo->bar[1]}.
This should print a capital 'A': \x41
EOT;
?>
출력결과
My name is "MyName". I am printing some Foo.
Now, I am printing some Bar2.
This should print a capital 'A': A
Now, I am printing some Bar2.
This should print a capital 'A': A
히어도큐먼트는 PHP 4 에서 추가됨.