2013.
11.
09
02:39:37
結論から言えば、
ヒアドキュメント:二重引用符(ダブルクォート)囲みの文字列と同じ
Nowdoc:一重引用符(シングルクォート)囲みの文字列と同じ
です。
ただしNowdocはPHP5.3以降で使用可能。
それではもちっと細かく見ていきまする。
まずPHPでは複数行のテキストを記述する際にヒアドキュメントが使えます。
例えばこんな感じφ(--)
実行結果はこんな感じφ(--)
ヒアドキュメントでは中に書いた変数が展開されます。
つまり二重引用符で囲んだ文字列と同じ扱いで、こう書いても結果は一緒φ(--)
さてさて、PHP5.3以降ではこれのシングルクォートで囲った版が使えるのだそうな。
その名も「Nowdoc」。
「Newdoc」ではないのでご注意ください。「にゅー」じゃないよ、「なう」だよ。
Nowdocの書き方は例えばこんな感じφ(--)
実行結果はこんな感じφ(--)
Nowdocでは中に書いた変数が展開されません。
つまり一重引用符で囲んだ文字列と同じ扱いで、こう書いても結果は一緒φ(--)
ヒアドキュメントとの違いは……間違いさがしみたいですね。
の「EOT」のところがシングルクォート囲みになっているのです。
ヒアドキュメントとの違いはそれだけ。
個人的には紛らわしい(=バグの元になりやすい)ので滅多に使わないと思いますが、
一応押さえておこうと思います、Nowdocさん。
他人の書いたコードを見るときは注意が必要ですね。
ヒアドキュメント:二重引用符(ダブルクォート)囲みの文字列と同じ
Nowdoc:一重引用符(シングルクォート)囲みの文字列と同じ
です。
ただしNowdocはPHP5.3以降で使用可能。
それではもちっと細かく見ていきまする。
まずPHPでは複数行のテキストを記述する際にヒアドキュメントが使えます。
例えばこんな感じφ(--)
<?php
$val = 'hogehoge';
$text = <<< EOT
うんちゃら
かんちゃら
$val
ほげ
EOT;
print mb_ereg_replace('\r\n', '<br>', $text);
?>
$val = 'hogehoge';
$text = <<< EOT
うんちゃら
かんちゃら
$val
ほげ
EOT;
print mb_ereg_replace('\r\n', '<br>', $text);
?>
実行結果はこんな感じφ(--)
うんちゃら
かんちゃら
hogehoge
ほげ
かんちゃら
hogehoge
ほげ
ヒアドキュメントでは中に書いた変数が展開されます。
つまり二重引用符で囲んだ文字列と同じ扱いで、こう書いても結果は一緒φ(--)
<?php
$val = 'hogehoge';
$text = "
うんちゃら
かんちゃら
$val
ほげ
";
print mb_ereg_replace('\r\n', '<br>', $text);
?>
$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 = 'hogehoge';
$text = <<< 'EOT'
うんちゃら
かんちゃら
$val
ほげ
EOT;
print mb_ereg_replace('\r\n', '<br>', $text);
?>
実行結果はこんな感じφ(--)
うんちゃら
かんちゃら
$val
ほげ
かんちゃら
$val
ほげ
Nowdocでは中に書いた変数が展開されません。
つまり一重引用符で囲んだ文字列と同じ扱いで、こう書いても結果は一緒φ(--)
<?php
$val = 'hogehoge';
$text = '
うんちゃら
かんちゃら
$val
ほげ
';
print mb_ereg_replace('\r\n', '<br>', $text);
?>
$val = 'hogehoge';
$text = '
うんちゃら
かんちゃら
$val
ほげ
';
print mb_ereg_replace('\r\n', '<br>', $text);
?>
ヒアドキュメントとの違いは……間違いさがしみたいですね。
$text = <<< 'EOT'
の「EOT」のところがシングルクォート囲みになっているのです。
ヒアドキュメントとの違いはそれだけ。
個人的には紛らわしい(=バグの元になりやすい)ので滅多に使わないと思いますが、
一応押さえておこうと思います、Nowdocさん。
他人の書いたコードを見るときは注意が必要ですね。