PHP Heredoc 与 Nowdoc

這篇教學將會詳細解釋 PHP 中的 Heredoc 和 Nowdoc 語法。Heredoc(heredocument)與 Nowdoc(nowdocument)是一種在 PHP 中定義字串的方式,它們可以包含變數和換行符號。

概述

  • Heredoc:允許你定義一個字串,並且能夠在其中嵌入變數。當 PHP 解析器遇到 Heredoc 時,會將其視為一個字串,直到遇到結束標籤為止。
  • Nowdoc:與 Heredoc 類似,但是 Nowdoc 不支持變數的嵌入。Nowdoc 可以用來定義那些不需要內部解析的原始字串,或者包含雙引號的字串,可以避免使用複雜的轉義序列。

Heredoc

Heredoc 語法如下:

$str = <<<EOD
Example of string
spanning multiple lines
using heredoc syntax.
Variable $a is also parsed.
EOD;

在上面的例子中,<<<EOD 開始一個 Heredoc 塊,然後 EOD; 結束這個塊。在這兩個標籤之間的內容將被解析為字串,變數也會被替換成其值。

Nowdoc

Nowdoc 語法如下:

$str = <<<'EOD'
Example of string
spanning multiple lines
using nowdoc syntax.
Variable $a is not parsed.
EOD;

在上面的例子中,<<<'EOD' 開始一個 Nowdoc 塊,然後 EOD; 結束這個塊。Nowdoc 與 Heredoc 的區別在於,Nowdoc 不會解析變數和轉義序列。

比較

下表比較了 Heredoc 和 Nowdoc:

Heredoc Nowdoc
語法 <<<EODEOD; <<<'EOD'EOD;
變數解析 支持 不支持
轉義序列 支持 不支持
優點 可以包含變數和轉義序列 更安全,速度稍快,對內存占用更少
使用場景 需要解析變數或包含雙引號的字串時 不需要解析變數且不包含雙引號的字串時

結論

Heredoc 和 Nowdoc 都是 PHP 中定義多行字串的有效方式,它們各自有其優缺點。在選擇使用哪一種語法時,需要根據具體的場景和需求來決定。