V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
ab
V2EX  ›  PHP

PHP 菜鸟请教一下 ob_start()的用法

  •  
  •   ab · 2020-01-03 20:54:50 +08:00 · 3598 次点击
    这是一个创建于 1789 天前的主题,其中的信息可能已经有所发展或是发生改变。
    <?php
    ob_start('callback');

    echo 'test';

    function callback($value){
    @file_put_contents($_SERVER["DOCUMENT_ROOT"].'/cache.html', $value); //cache file
    ob_end_flush();
    //return $value;
    }
    ?>


    回调中,为什么用 ob_end_flush 不输出内容,而 return $value 却可以呢?
    1 条回复    2020-01-03 21:07:53 +08:00
    ab
        1
    ab  
    OP
       2020-01-03 21:07:53 +08:00
    自己回答,文档没看清楚。

    ob_end_clean(), ob_end_flush(), ob_clean(), ob_flush() and ob_start() 不能从一个回调函数中调用。 如果从回调函数中调用了它们,产生的行为是不明确的。 如果想要删除缓冲区的内容,从回调函数中返回一个"" (空字符串)。 更不能从一个回调函数中使用像 print_r($expression, true) 或 highlight_file($filename, true) 一样的输出缓冲函数。
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   1131 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 24ms · UTC 18:59 · PVG 02:59 · LAX 10:59 · JFK 13:59
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.