0

サポートする必要があるのはほんの少しの操作だけなので、独自のテンプレートシステムを作成しています。それらの1つは、テンプレート内のデータベースから生成された動的データを使用してウィジェットをロードすることです。

PHPコードを解析し、結果を表示せずに変数に格納してから、その変数から生成されたソースを別の場所で使用する方法はありますか?

現在使用してob_get_contents()いますが、echoコマンドを使用すると、それが無効になり、コンテンツがサイトの最初のものとして表示されます。これは、どういうわけか回避したい動作です。

それは可能ですか?それとも私はob_get_contents完全に誤用していますか?

4

4 に答える 4

0

皆さんからの返信に感謝します。しかし、コードにばかげた「バグ」が見つかりました。私のtemplateparserでは、テンプレート内の領域をカウントし、$iを使用してそれらをループします。次に、ウィジェットでデータセット(ナビゲーション構造)も反復処理する必要があり、$iを再度使用しました。これが私の問題を引き起こしていました。問題を解決するには、単に$iの名前を変更する必要がありました。

于 2009-12-11T22:01:12.287 に答える
0

ページの最初で必ず実行しob_start()てください。

于 2009-12-10T21:38:59.623 に答える
0

もう1つの方法は、phpの実行中に変数にhtmlを追加してから、次のように出力することです。

$array = array('asd', 'dsa');
$html = '<div id="array">';
foreach ($array as $item) {
    $html .= '<div class="item">'.$item.'</div>';
}
$html .= '</div>';

その後

echo $html;

あなたがそれをしたい場所。

于 2009-12-10T21:53:53.987 に答える
0

私がやりたいことの1つは、obstart()とobgetcontents()をRAIIスタイルのラッパーでラップすることです。これにより、例外時のネストと適切な処理が可能になります。__toString()を実装すると、優れたインターフェイスが得られます。使用すると次のようになります。


<?php
function someFunction()
{
    $buffer = new BufferOutput;
    echo 'something';

    $output = (string)$buffer;
    unset($buffer); // for illustration. automatically calls ob_end_clean()

    return $output;
}

echo someFunction();
?>

このようにすると、start&endを正しく呼び出したかどうかを心配する必要がなくなります。バッファ出力を保存する場合は、obendclean()を呼び出す前にすぐに取得する必要があります。

于 2009-12-10T22:05:25.640 に答える