$html = <<<HTML
<p>Hello world</p>
HTML;
// equivalent:
$html = "<p>Hello world</p>";
これは、単一引用符と二重引用符を使用するのと同様の文字列を、書き何とか別の方法で物事を脱出するための構文である、PHP string Heredoc syntaxを使用しています。 {}
を使用すると、いくつかのPHP文字列を直接挿入することができます。
<?php
ob_start();
?>
<p>Hello world</p>
<?php
$html = ob_get_clean();
これは全く別のものです。 PHP output buffering controlを使用して、でないものをPHPコードブロック内のにキャプチャします。与えられた例のように、<p>Hello world</p>
はPHPコードブロックの外側に書かれており、すぐにクライアントに出力されるはずです。出力バッファリングを有効にすると、PHP内のバッファ内に格納されるため、後でob_get_contents()
またはob_get_clean()
を使用して取得できます。 PHP変数を挿入する必要がある場合は、<?=$blah?>
または<?php echo $blah?>
を使用する必要があります。
一部のCMSでは、出力バッファリング制御機能を使用してコンテンツとモジュールを管理しています。 1つの例はJoomlaです。この設計の利点は、モジュールが予約されたスペースにコンテンツを配置する必要があるときはいつでも、コンテンツを利用可能にするために単にecho
を使用できることです。これにより、特定の関数呼び出しを実装したり、特定の変数に割り当てる必要なく、モジュールからコンテンツを取得する方法が簡単になり、システムの管理が容易になります。
<?php
ob_start();
include dirname(__FILE__)."/content.php";
$content = ob_get_clean();
output_document(array("body"=>$content));
また、私は上に一つのファイルを含めることができるように、と私はシンプルなテンプレートシステムを作成することができます最後に任意のPHPを持たずに出力バッファリング機能を利用するが、これは一種のですオフトピック。
私はHEREDOCが明らかに多くのクリーナーであると言います。それはまた、 "バッファに書き込むさまざまな方法"でもありません。 HEREDOCは*文字列を引用する方法です*。 'ob_'は、私が言うことを敢えて外出する前に出力をキャプチャするためにハックします。 – deceze
decezeに同意すると、ほとんどの 'ob_ *'関数は悪いデザインを指しています。その後、HEREDOCのコントローラーまたはモデルで再び「レイヤーを見る」と叫ぶ。 –
@MikeBそれはまた叫んだ "ヘイイ、別のコーダーのためにお金をくれ!" –