输出缓冲区内的方法不工作


Method inside output buffer not working

假设只有一个简单的代码片段:

public function myMethod($file)
{
    require $file;
}
public function capture($file, array $args)
{
    extract($args, EXTR_SKIP);
    ob_start();
    $this->myMethod($file); //not working
    require $file; //works
    return ob_get_clean();
}

谁能解释一下为什么上面的代码片段只在使用require而不是使用该方法的情况下有效?

您需要将这些参数提供给myMethod:

public function myMethod($file, array $args)
{
    extract($args, EXTR_SKIP);
    require $file;
}
public function capture($file, array $args)
{
    ob_start();
    $this->myMethod($file, $args);
    return ob_get_clean();
}

你不能在函数中包含(require)一个文件,因为它可以被调用很多次,所以require会被调用n次。所以试试

 public function myMethod($file)
    {
        require_once $file;
    }