関数が生成する可能性のある出力を抑制する最も簡単な方法は何ですか?私がこれを持っていると言う:
function testFunc() {
echo 'Testing';
return true;
}
そして、testFunc()を呼び出して、ページに「Testing」が表示されないように戻り値を取得したいと思います。これがdoes他のものを出力する他のコードのコンテキストにあると仮定すると、これを行うための良い方法はありますか?たぶん、出力バッファをいじっていますか?
はい、 出力バッファ をいじることがまさに答えです。出力するメソッドを呼び出す前にオンにするだけです(関数自体ではなく、呼び出す場所で、スクリプト全体またはスクリプトフローにラップすることができますが、単に「タイト」にすることができます。メソッドの呼び出しをラップします):
function foo() {
echo "Flush!";
return true;
}
ob_start();
$a = foo();
ob_end_clean();
また、出力は生成されません。
どうぞ:
ob_start();
testFunc();
ob_end_clean();
「ob」は「出力バッファリング」の略です。ここのマニュアルページを見てください: http://www.php.net/outcontrol
はい、あなたはPHPの出力バッファリング関数、つまりob_startとob_end_cleanを活用することに関して正しい方向に進んでいます(php.netでそれらを調べてください):
<?php
function testFunc() {
echo 'Testing';
return true;
}
ob_start();
$output = testFunc();
ob_end_clean();
echo $output;
?>
コードにいくつかの条件を適用するのと同じくらい簡単ではありませんか?
つまり、変数=テストしてから出力する場合、そうでない場合はそうではありませんか?
EVALのようにブラウザに直接出力する結果を持つ関数の場合、結果をob_startでキャプチャできます。