例えば:
$sql = <<<MySQL_QUERY
これがヒアドキュメントの構文です。ヒアドキュメント文字列<<<
は、選択したトークンに加えて配置することで開始し、トークンのみ(他には何も!)を新しい行に配置することで終了します。便宜上、例外が1つあります。終了区切り文字の後にセミコロンを1つ追加できます。
例:
echo <<<HEREDOC
This is a heredoc string.
Newlines and everything else is preserved.
HEREDOC;
文字列を区切る3番目の方法は、ヒアドキュメント構文です:<<<。
この演算子の後に、識別子が提供され、次に改行が提供されます。文字列自体が続き、次に同じ識別子が続き、引用を閉じます。
これはヒアドキュメントと呼ばれ、数行にわたる長いテキストを実行できます。そこにPHP変数を入れると、それらは値に置き換えられます。チャートという言葉は何でもかまいません。引用されたテキストが始まる場所で開始および停止するのは同じである必要があります。
複数の引用符で囲まれた文字列を追加することで同じことを行うことができますが、このHTMLテキストのような拡張ドキュメントの場合、ほとんどの場合、これはよりクリーンです。PHPの単一引用符文字列のようなnowdocと呼ばれるものもありますが、これらでは変数を使用できません。
引用符などを気にする必要のない長い文字列のヒアドキュメントです。CHARTという単語に気付いた場合、文字列の終わりを示すCHART;という行があります。
この形式を使用するときに覚えておくべき重要なことは、文字列の終わりを定義するために使用する文字列(この場合はCHARTなど)が何であれ、その単語はそれ自体の行に表示され、その後にセミコロンが続き、NO文字は、同じ行のセミコロンの後に空白文字でさえも出現する可能性があります。そうでない場合、PHPはそれが文字列の一部であると見なします。
これはヒアドキュメント構文です。
$str = <<<EOD
Example of string
spanning multiple lines
using heredoc syntax.
EOD;
Heredoc
私は、Nowdoc
非常に強力で有用なものの両方を見つけましPHP
た。これまでのところ、あなたができることの例をこれ以上挙げている人がいないことに驚いています。
Heredoc
まず、との違いNowdoc
は単純です。
Heredoc
:変数を入れることができる""二重引用符文字列のようなものですNowdoc
:''一重引用符の文字列のようなもので、変数は解析されません次の例では、トークンを一重引用符で囲むだけHeredoc
にするために、を 表示します->'TOKEN'。Nowdoc
簡単な例
$a = "Hello";
$b = "World";
// HEREDOC
echo <<<HEREDOC
<strong> HEREDOC: </strong>
Variable A: "$a"
Variable B: "$b"
HEREDOC;
echo '</br>';
// NOWDOC
echo <<<'NOWDOC'
<strong> NOWDOC: </strong>
Variable A: "$a"
Variable B: "$b"
NOWDOC;
出力
HEREDOC: Variable A: "Hello" Variable B: "World"
NOWDOC: Variable A: "$a" Variable B: "$b"
<br>
、各行に追加しますこれは、HEREDOCが各\nを実際の行として解釈するために機能します
// HEREDOC
echo nl2br(<<<HEREDOC
<strong> HEREDOC: </strong>
Variable A: "$a"
Variable B: "$b"
HEREDOC);
// Output HEREDOC:
//Variable A: "Hello"
//Variable B: "World"
小さなコンポーネントを作成する
<?php
foreach($tasks as $task) {
// Create an HTML like component
$component = <<<HEREDOC
<div class="pure-u-1-3">
<div class="card">
<div class="card-header">
{$task['name']}
</div>
<div class="card-body">
<h5 class="card-title"> {$task['state']} </h5>
<p class="card-text"> {$task['description']} </p>
<a href="view?model=todo_list&task_id={$task['id']}" class="btn btn-primary">See Task Todos</a>
</div>
</div>
</div>
HEREDOC;
echo $component; // Output
}
?>
または、1つの文字列を入力して、1つのエコーで出力します
<?php
$taskRendered = '';
foreach($tasks as $task) {
// Create an HTML like component
$component = <<<HEREDOC
<div class="pure-u-1-3">
<div class="card">
<div class="card-header">
{$task['name']}
</div>
<div class="card-body">
<h5 class="card-title"> {$task['state']} </h5>
<p class="card-text"> {$task['description']} </p>
<a href="view?model=todo_list&task_id={$task['id']}" class="btn btn-primary">See Task Todos</a>
</div>
</div>
</div>
HEREDOC;
$taskRendered .= $component;
}
echo $taskRendered; // Output
?>
明確なアイデアを得るには:
$data = array(
"Id" => 12345,
"Cutomer" => "hi",
"Quantity" => 2,
"Price" => 45
);
curl_setopt($curl, CURLOPT_POSTFIELDS, json_encode($data));
使用する場合<<<
:
$data = <<<DATA
{
"Id": 12345,
"Customer": "John Smith",
"Quantity": 1,
"Price": 10.00
}
DATA;
curl_setopt($curl, CURLOPT_POSTFIELDS, $data);
json_encode()
結論:最初の方法を使用する場合は、何らかの処理が必要な方法に変換する必要があります。代わりに、演算子を使用して<<<
時間を節約し、クリーンなコードを取得できます。:)