输出缓冲区内的方法不起作用

时间:2015-10-12 11:02:59

标签: php oop require output-buffering

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

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而不是在使用该方法时有效吗?

2 个答案:

答案 0 :(得分:0)

您需要将参数提供给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();
}

请参阅the scope of a variable

答案 1 :(得分:0)

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

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