最近在了解php运行的一些原理,一般php都是通过controller调用模板文件,来显示页面,同时,controller里面会一些变量的值也会赋给模板文件,我使用template.php文件作为模板文件,所以在模板文件中直接使用php的语法就可以显示controller里面赋值过来的变量。通过查看ci框架的代码他会先开启ob_start,然后引入模板文件template.php,最后返回ob_get_clean(),如下面显示
ob_start(); include($_ci_path); $buffer = ob_get_contents(); @ob_end_clean(); return $buffer;
同时,我看公司内部框架的代码原理也基本是一样的,我现在现在想知道,使用ob等一系列函数有什么用,感觉只是单纯的include文件就可以赋值过去了。
回复内容:
最近在了解php运行的一些原理,一般php都是通过controller调用模板文件,来显示页面,同时,controller里面会一些变量的值也会赋给模板文件,我使用template.php文件作为模板文件,所以在模板文件中直接使用php的语法就可以显示controller里面赋值过来的变量。通过查看ci框架的代码他会先开启ob_start,然后引入模板文件template.php,最后返回ob_get_clean(),如下面显示
ob_start(); include($_ci_path); $buffer = ob_get_contents(); @ob_end_clean(); return $buffer;
同时,我看公司内部框架的代码原理也基本是一样的,我现在现在想知道,使用ob等一系列函数有什么用,感觉只是单纯的include文件就可以赋值过去了。
function render($template, array $var = array()) {
extract($var); // 提取数组中的变量(你关注的问题就在这里)
ob_end_clean(); // 关闭顶层的输出缓冲区内容
ob_start(); // 开始一个新的缓冲区
require "$template"; // 加载视图view
$view = ob_get_contents(); // 获得缓冲区的内容
ob_end_clean(); // 关闭缓冲区
ob_start(); // 开始新的缓冲区,给后面的程序用
return $view; // 返回文本,此处也可以直接echo输出
}
欧巴系列函数还是很有用的,你看控制器调用render渲染视图后,拿到的是HTML,你可以把这些HTML写入成静态文件缓存起来,或者替换HTML里的一些东西后输出,很方便.echo render('index.php', $data);
ZipMarket程序仿自Envato旗下网站,对于想创建数字内容/素材交易平台的站长来说,ZipMarket是一个十分独特和极具创新的解决方案,用户在你的网站注册并购买或出售数字内容/素材作品时,你可以获得佣金;用户推广用户到你的网站购买或出售数字内容/素材时,引入用户的用户也可以获得佣金。实际上,ZipMarket是一套完美的数字内容类自由职业生态系统,功能不仅限于素材交易,除了模板/主题、文
立即学习“PHP免费学习笔记(深入)”;
缓冲区都作用还是蛮大的。比如你要保存客户端的信息;使用使用发送文件头信息不对header或者setcookie产生影响等
我只能理解为,你没明白include是干嘛的










