输出缓冲区内的方法不起作用
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 将被再次调用 n 次..所以试一试
public function myMethod($file)
{
require_once $file;
}
假设只有一个微不足道的片段:
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 将被再次调用 n 次..所以试一试
public function myMethod($file)
{
require_once $file;
}