Php ob_如何同时启动和提取函数?

Php ob_如何同时启动和提取函数?,php,codeigniter,output-buffering,Php,Codeigniter,Output Buffering,我注意到很多框架/博客引擎等都使用ob_start生成它们的输出,并且在调用ob_start之前,要传递给模板的变量已经调用了extract 我猜缓冲输出可以访问使用extract创建的任何变量,但我找不到任何关于这方面的具体文档 Codeigniter示例(为了简洁起见,从原始代码中删除了一些注释): extract($this->\u ci\u cached\u vars); ob_start(); //如果PHP安装不支持短标记,我们将 //做一点字符串替换,更改短标记 //到标准的PHP

我注意到很多框架/博客引擎等都使用ob_start生成它们的输出,并且在调用
ob_start
之前,要传递给模板的变量已经调用了
extract

我猜缓冲输出可以访问使用
extract
创建的任何变量,但我找不到任何关于这方面的具体文档

Codeigniter示例(为了简洁起见,从原始代码中删除了一些注释):

extract($this->\u ci\u cached\u vars);
ob_start();
//如果PHP安装不支持短标记,我们将
//做一点字符串替换,更改短标记
//到标准的PHP echo语句。
如果(!is_php('5.4')&&(bool)@ini_get('short_open_tag')==FALSE&&config_项('rewrite_short_tags')==TRUE)
{

echo eval(“?>”.preg\u replace(“/;*\s*\?>/”,“;?>”,str\u replace('另请参见或和上的文档。在局部变量作用域被
extract
填充后,ed代码才有权访问该作用域。否则,您对其工作原理的猜测基本正确。谢谢!因此,eval在将字符串参数作为代码求值时使用作用域中的符号表。因为动作变量在符号表中,它们是否可用于评估?
extract($this->_ci_cached_vars);

ob_start();

// If the PHP installation does not support short tags we'll
// do a little string replacement, changing the short tags
// to standard PHP echo statements.
if ( ! is_php('5.4') && (bool) @ini_get('short_open_tag') === FALSE && config_item('rewrite_short_tags') == TRUE)
{
echo eval('?>'.preg_replace('/;*\s*\?>/', '; ?>', str_replace('<?=', '<?php echo ', file_get_contents($_ci_path))));
}
else
{
include($_ci_path); // include() vs include_once() allows for multiple views with the same name
}