有一个名为 ob_start 的 PHP 函数。
“启用输出缓冲”的意思,缓冲将数据存储在称为缓冲区的地方。
ob_start是一个函数,不会立即显示计算结果,而是暂时放在另一个地方。
在程序中,获取、格式化和计算各种数据。
将数据输出到页面时,在PHP文件中使用echo进行操作。
如果你写 echo,输出将在那个时候执行。
但是,我还不想程序马上就输出执行结果要怎么办呢?
比如如下图,有data和html标签被不同函数获取处理的情况。
示例一,保存为summary.php文件。
<?php
function getTitle(){ // 标题数据取得的函数
return "<h2>烽烟博客</h2>";
}
function getNote(){ // 段落数据获取的函数
return "<p>免费实用工具箱!</p>";
}
function makeHtml(){
$data = "";
$data .= '<div class="samurai_title">';
$data .= getTitle(); // 标题数据函数调用
$data .= getNote(); // 段落数据函数调用
$data .= '</div>';
return $data;
}
$html_code = makeHtml();
echo $html_code;
?>
执行结果
烽烟博客
免费实用工具箱!
由于未包含在<?php ?>中的部分将原样显示在页面上,因此有必要将标签包含在变量中。
另外,由于代码难读,如果html标签和数据获取分开写就好了。
编写程序时,一遍又一遍地重复相同的过程是不好的。
保存为same.php文件。
<div class="disp_html">
<?php include("disp_html.php"); ?>
</div>
<div class="disp_html">
<?php include("disp_html.php"); ?>
</div>
在上面的例子中,disp_html.php 被调用了两次。
最好将调用的结果保存在某处并调用它。
那么,为了解决这个问题,我们开始讲解如何使用ob_start。
现在是实践部分。
前文中给出的summary.php的基础上,我们使用ob_start一起输出。
保存为ob_start_summarize.php文件。
<?php
function getTitle(){ // 标题数据取得的函数
return "<h2>烽烟博客</h2>";
}
function getNote(){ // 段落数据获取的函数
return "<p>免费实用工具箱!</p>";
}
function makeHtml(){
ob_start(); //开始记录
?>
<div class="samurai_title">
<?php echo getTitle(); ?>
<?php echo getNote(); ?>
</div>
<?php
$data = ob_get_contents(); // 将记录结果代入变量
ob_end_clean(); // 记录终止
return $data;
}
$html_code = makeHtml();
echo $html_code;
?>
执行结果
烽烟博客
免费实用工具箱!
结果和summarize.php一样,但是html标签可以直接写,不用放在变量里,这样代码更简洁。
现在,让我们使用 ob_start 来统一输出前文给出的 same.php 示例。
保存为ob_start_same.php文件。
<?php
ob_start();
include("disp_html.php");
$disp_html = ob_get_contents();
ob_end_clean();
?>
<div class="disp_html">
<?php echo $disp_html; ?>
</div>
<div class="disp_html">
<?php echo $disp_html; ?>
</div>
修改之前include("disp_html.php");被调用了两次,现在只需要一次即可。
本文讲的是PHP的ob_start函数。
可以利用ob_start函数自由控制数据是否输出到页面。
评论列表:
发布于 4天前回复该评论
发布于 3天前回复该评论
发布于 3天前回复该评论
发布于 3天前回复该评论
发布于 3天前回复该评论