4

私は疑問に思っていました:

$foo = <<< EOT
Hello, World!
EOT;

と同じくらい有効です

$foo = <<<EOT
Hello, World!
EOT;

特に、これが PHP のすべてのバージョン (または最新バージョンのみ) に当てはまるかどうか。

<<<と最初のEOT識別子の間のスペースが構文的に有効かどうかを知りたいのでしょうか。たとえば、私の PHP インタープリター 5.3.10 はこれを正しく実行しますが、私の vim テキスト エディターは、 と の間にスペースがある場合、ヒアドキュメントを同じように構文強調表示しません<<<(EOT識別子EOTは紫ではなく白で表示されます)。

それで、ここでの取引は何ですか?PHPのすべてのバージョンで両方が合法かどうか?

4

3 に答える 3

5

タブとスペースが許可されており、明らかに引用符も許可されています。

<ST_IN_SCRIPTING>b?"<<<"{TABS_AND_SPACES}({LABEL}|([']{LABEL}['])|(["]{LABEL}["])){NEWLINE} {

ソース

編集:

于 2012-07-13T09:29:50.053 に答える
3

マニュアルには次のように書かれています(私のものを強調してください)

文字列を区切る 3 つ目の方法は、ヒアドキュメント構文 <<< です。この演算子の後に、識別子が提供され、次に改行が提供されます。

私にとって、これはスペースがオプションであることを意味します (そして常にオプションになります)。これは、言語全体として、識別子は、空白を含め、任意の量の空白によって隣接するトークンから分離できるためです。

于 2012-07-13T09:31:01.630 に答える
0

いいえ、<<< と識別子の間にスペースを入れないでください。PHPドキュメントで指定されているとおり:

(...) 識別子は、PHP の他のラベルと同じ命名規則に従う必要があります:英数字とアンダースコアのみを含み、数字以外の文字またはアンダースコアで開始する必要があります。

ソース: http://www.php.net/manual/en/language.types.string.php#language.types.string.syntax.heredoc

于 2012-07-13T09:29:34.360 に答える