プログラミング言語や環境設定を中心としたパソコン関連の技術メモです。
主にシステム開発中に調べたことをメモしています。TIPS的な位置付けで、気が向いたときにちまちま更新していきます。
PHP、ヒアドキュメントとNowdoc(Newdocじゃないよ)
結論から言えば、

ヒアドキュメント:二重引用符(ダブルクォート)囲みの文字列と同じ
Nowdoc:一重引用符(シングルクォート)囲みの文字列と同じ


です。
ただしNowdocはPHP5.3以降で使用可能

それではもちっと細かく見ていきまする。

まずPHPでは複数行のテキストを記述する際にヒアドキュメントが使えます。
例えばこんな感じφ(--)

<?php

$val = 'hogehoge';
$text = <<< EOT
うんちゃら
かんちゃら
$val
ほげ
EOT;

print mb_ereg_replace('\r\n', '<br>', $text);

?>

実行結果はこんな感じφ(--)

うんちゃら
かんちゃら
hogehoge
ほげ

ヒアドキュメントでは中に書いた変数が展開されます。
つまり二重引用符で囲んだ文字列と同じ扱いで、こう書いても結果は一緒φ(--)

<?php

$val = 'hogehoge';
$text = "
うんちゃら
かんちゃら
$val
ほげ
";

print mb_ereg_replace('\r\n', '<br>', $text);

?>

さてさて、PHP5.3以降ではこれのシングルクォートで囲った版が使えるのだそうな。
その名も「Nowdoc」。
「Newdoc」ではないのでご注意ください。「にゅー」じゃないよ、「なう」だよ。

Nowdocの書き方は例えばこんな感じφ(--)

<?php

$val = 'hogehoge';
$text = <<< 'EOT'
うんちゃら
かんちゃら
$val
ほげ
EOT;

print mb_ereg_replace('\r\n', '<br>', $text);

?>

実行結果はこんな感じφ(--)

うんちゃら
かんちゃら
$val
ほげ

Nowdocでは中に書いた変数が展開されません。
つまり一重引用符で囲んだ文字列と同じ扱いで、こう書いても結果は一緒φ(--)

<?php

$val = 'hogehoge';
$text = '
うんちゃら
かんちゃら
$val
ほげ
';

print mb_ereg_replace('\r\n', '<br>', $text);

?>

ヒアドキュメントとの違いは……間違いさがしみたいですね。

$text = <<< 'EOT'

の「EOT」のところがシングルクォート囲みになっているのです。
ヒアドキュメントとの違いはそれだけ。

個人的には紛らわしい(=バグの元になりやすい)ので滅多に使わないと思いますが、
一応押さえておこうと思います、Nowdocさん。
他人の書いたコードを見るときは注意が必要ですね。
スポンサーリンク
 
このエントリーをはてなブックマークに追加 

category:● PHP  thema:システム開発 - genre:コンピュータ  Posted by ササキマコト 

  関連記事