2011-09-17 11 views
1

私はそれを修正しようとしている別の人のコードを見ていますが、何が起こっているのか分かりません。私は一般的にプログラミングのかなり強い知識を持っていますが、私を捨てている1つの行があります。下記を参照してください:スイッチの場合、 'END'キーワード?

<?php 
switch ($task) { 
    case "createDJ": 
      echo <<<END; 
      <h5>Create DJ Form</h5> 
      <!-- Code for DJ form goes here. --> 
      END; 
      break; 
    case "createShow": 
     echo <<<END; 
     <h5>Create Show Form</h5> 
     <!-- Code for Show form goes here. --> 
     END; 
     break; 
    //... 
?> 

これらのENDステートメントでは何が起こりますか?私は以前にそれらを見たことがない、また、<<<標識は何ですか?

編集:構文の強調表示については申し訳ありませんが、なぜそれがすべて乱雑であるかわかりません。

編集:そして今、私はなぜ構文の強調表示が台無しになったのか理解しています! haha

+0

[<<<< "演算子の名前は何ですか?](http://stackoverflow.com/questions/6062830/what-is-the-name-for-the-operator ) – Jon

+1

あなたはそれを正しくフォーマットしていると確信していますか? 'END;'は '<<< END'で始まるheredoc文の終わりですが、行の先頭に来なければならない、またはスクリプトが失敗します – KingCrunch

+0

ええ、それは他人のコードなので、それがなぜ機能しないのかしかし、洞察力に感謝します。 :) – theangryhornet

答えて

6

これは文ではなく、文字列を引用する方法です。

これはheredoc構文と呼ばれ、複数行の文字列を引用するのに便利な方法です。それが<<<ENDで始まり、行頭のENDで終了します。 (ENDは、プログラマの選択があり、彼らは彼らが望むの識別子を使用することができます。)

これはhere in the PHP documentationを説明します<<<:文字列を区切る

第三の方法は、ヒアドキュメント構文です。この 演算子の後には、識別子が与えられ、次に改行が与えられます。文字列自体 が続き、引用符を閉じるために再び同じ識別子が入力されます。

終了識別子は、行の最初の列に始まるでなければなりません。 また、識別子はPHPの他の ラベルと同じ命名規則に従う必要があります。英数字と のアンダースコアのみを含む必要があり、数字以外の文字またはアンダースコアで始まる必要があります。

+0

関連ドキュメント:http://www.php.net/manual/en/language.types.string.php#language.types.string.syntax.heredoc – rovaughn

+2

注目すべき価値:「ヘレドック」と呼ばれています。 _any_文字列構文で複数行の文字列を作成することができます – KingCrunch

1

いくつかの言語で使用できる文字列の構文はheredocです。

<<<HERE 
string text here 
HERE 
関連する問題