ob_start 函数用于打开输出缓冲区,由于输出缓冲区不缓存header、setcookie、session_start的输出内容,所以你的担心是不必要的。当然执行ob_start之前的输出内容也不在缓冲区内ob_start 可以有一个回调函数作为参数,用于指示当缓冲区关闭时的操作
至于把回调函数写成形如array( &$this, 'cache_callback')这样。是因为回调函数是类的方法,这是php约定的写法。不存在“为什么”的问题!

解决方案 »

  1.   

    明白。我的程序流程如下:
    header.php  (使用了ob_start)
    index.php   (开始引用了header.php,结束引用了footer.php)
    footer.php  (使用了ob_end_flush)而每个程序都使用单独的模板。1、我在index.php中使用的use_cache,是否会同时缓存footer.php的内容?还是仅仅对当前程序中的对象$tpl进行缓存?2、按照以前唠叨所教的分块缓存方法,多个缓存块会进行多次ob_start( array( &$this, 'cache_callback' ) );,它们是否都是在程序结束时进行统一的回调?