有一个名为 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。
把同一个进程和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的各种使用方式
现在,让我们使用 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函数自由控制数据是否输出到页面。