私は php タグの外側に html を書くことを好むので、Eclipse は適切な構文強調表示で html を表示できます。連結方法は書くのが難しく、強調表示されません (以下の 2 つの例を参照してください)。
長々と申し訳ありません。これらの例は非常に単純なので、読みやすいはずです。
私はこれが好きではありません.「引用符」と「$o」が多すぎて、構文が強調表示されていません!:
<?php
display($something){
$o = '';
$o .= '<div>';
$o .= $something;
$o .= '</div>';
return $o;
}
// I want to be able to do this:
echo display(display('something'));
これにより、関数は終了を完了し<tag>
たり、後で追加の html を追加したりすることができます。 上記の例は機能的に私がやろうとしていることですが、これらの理由 (「引用符」、「$o」、および構文の強調表示) のために、このようなシステムを作成していません。
次の例は、私が html を書きたいと思っている方法ですが、返されないため、出力をネストすることはできません!
<?php
function display($something){ ?>
<div>
<?=$something?>
</div>
<?php }
// I'd like to do this, but I can't
display(display('this doesn't return anything to the first function call...'));
これが出力バッファリングの出番です。すぐに戻ります...
私が想定していること:
このようなことを達成するために使用できるようにしたいと思いますfunc_get_args()
(これは OOP オブジェクトに適用されることに注意してください。ここでは単純にします):
<?php
some_panel( title_style_1('Sample Header'),
panel_content(you_tube($vid_id)),
small_img_frame($img_src) );
基本的に、これらの出力関数のいずれかを取得して、好きなようにネストすることができます。<div>
Any の中に anyを入れ<p>
たり、その逆もできるのと同じように。唯一の問題は、タグを確実に閉じる必要があることです...そして、この場合、最後または子の間に任意のマークアップを追加できます。
これが出力バッファリングの出番です
<?php
function display($something){
ob_start(); // <---- Start buffer ?>
<div>
<?=$something?>
</div>
<?php return ob_end_clean(); // <------ Return output
}
// Now I can do this!!!
echo display(display('this should work!'));
そして、ドラムロールをお願いします.... 質問:
リクエストごとに数百回、場合によっては数千回もバッファリングを繰り返している場合、パフォーマンスに影響はありますか? 次の理由による出力バッファリングに対して警告する投稿を読みました。
信頼性: 他の場所でバッファが開始された場合、私が読んだところによると、これらのネストのように聞こえ、競合する可能性があります。
保守性: バッファーが開始された場合、それが停止されることを保証する必要があります。
私のシステムでは、出力バッファリングが同じ関数呼び出しで開始および停止される場合、これらは問題ないようです。<li>
私が心配しているのは、それぞれが単一の出力バッファリングを開始/停止する可能性のある数千のアイテムの過剰な反復です。
また、私がやろうとしていることを行うためのフレームワークやより良い方法を誰かが知っていれば、どんな提案もいただければ幸いです!