【 PHP 】PHP8に入門してみた 48日目 PHPの基本 ( 最後?・奥が深い文字列リテラル )
PHP8技術者認定初級試験 が始まるようなので 試験に向けて (できるだけ)勉強しようと思います! 使用する書籍は独習PHP 第4版(山田 祥寛)|翔泳社の本 (shoeisha.co.jp) となります。
データ型
これで打ち止め? 文字列の世界(ヒアドキュメント)
ヒアドキュメント
はLinuxの世界ではわりと一般的な機能です。
改行を伴う長い文字列を変数に格納する際に便利です。
PHP
ではエスケープシーケンス(\r, \n
)を使用して改行を表現できます。
でも長い文章だと改行のエスケープシーケンスが入っていると読みづらいですよね。
<!DOCTYPE html>
<html lang="ja">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>PHPの基本</title>
</head>
<body>
<?php
// print命令は指定された文字列を表示するための命令です。
$msg = 'こんにちは、変数の世界! <br />';
print $msg;
print 'こんにちは、皆さん! ';
print '<br />';
print "<pre>PHPは楽しい\nPHPは楽しい\nPHPは楽しい\nPHPは楽しい\nPHPは楽しい\nPHPは楽しい\nPHPは楽しい\nPHPは楽しい\nPHPは楽しい\nPHPは楽しい\nPHPは楽しい\nPHPは楽しい!!!!!</pre>"
?>
</body>
</html>
改行されていますが・・・。
ここで登場するのがヒアドキュメント
です。
PHP
でのヒアドキュメントは<<<EOD
からEOD;
までを文字列リテラルとして識別します。
EODは小文字でも大丈夫です。
以下のように書き換えてみました。
これでコードの可読性を上げることができます。
<!DOCTYPE html>
<html lang="ja">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>PHPの基本</title>
</head>
<body>
<?php
// print命令は指定された文字列を表示するための命令です。
$msg = 'こんにちは、変数の世界! <br />';
print $msg;
print 'こんにちは、皆さん! ';
print '<br />';
print <<<EOD
<pre>
PHPは楽しい
PHPは楽しい
PHPは楽しい
PHPは楽しい
PHPは楽しい
PHPは楽しい
PHPは楽しい
PHPは楽しい
PHPは楽しい
PHPは楽しい
PHPは楽しい
PHPは楽しい!!!!!
</pre>
EOD;
?>
</body>
</html>
先ほどの結果と同じですね😊
大事なこと
<<<EOD
と<<<"EOD"
は同等(変数やエスケープシーケンスを展開)<<<'EOD'
は変数やエスケープシーケンスを展開しない。(なぜかこの構文はヒアドキュメントではなくNowDoc構文と呼ばれることもあるようです)- 終了文字(
EOD;
)の左の空白を基準にして、各行の左の余白は除去される。(このとき、基準より余白が少ない行が存在するとエラーになる)
メモ
Linuxのヒアドキュメントとは少し違う部分があるようです。
ディスカッション
コメント一覧
まだ、コメントがありません