为什么缓冲区在多次调用时不输出任何内容?

时间:2017-04-11 21:56:22

标签: php buffer ob-start

我有一个名为test.php的PHP文件,其中包含以下代码。

<?php
$text = 'Grrrrr';
ob_start();
require_once('testinc.php');
$html2 = ob_get_clean();
echo '<pre>';
var_dump($html2);
echo '</pre>';


$text = 'wtf';
ob_start();
require_once('testinc.php');
$html2 = ob_get_clean();
echo '<pre>';
var_dump($html2);
echo '</pre>';


testing('blah');
testing('123');

function testing($text) {
    ob_start();
    require_once('testinc.php');
    $html = ob_get_clean();
    echo '<pre>';
    var_dump($html);
    echo '</pre>';
}

testinc.php文件包含以下代码。

<?php
echo $text;
?>
testing

当我运行代码时,输​​出看起来像这样。

string(13) "Grrrrrtesting"
string(0) ""
string(0) ""
string(0) ""

为什么缓冲区不能在第一次以外工作?如何才能使输出看起来像这样?

string(13) "Grrrrrtesting"
string(10) "wtftesting"
string(11) "blahtesting"
string(10) "123testing"

1 个答案:

答案 0 :(得分:0)

解决方案是不使用require_once()。将代码更改为include(),一切正常。