PHP动态变静态原理


Posted in PHP onNovember 25, 2006

用PHP输出静态页面的方法,就我所知道的,有2种,一种是利用模板技术,另一种是用ob系列函数。两种方法,看起来都差不多,但是实际上,却是不同的。

第一种:利用模板。目前PHP的模板可以说是很多了,有功能强大的smarty,还有简单易用的smarttemplate等。它们每一种模板,都有一个获取输出内容的函数。我们生成静态页面的方法,就是利用了这个函数。用这个方法的优点是,代码比较清晰,可读性好。

这里我用smarty做例子,说明如何生成静态页

<?php  
require('smarty/Smarty.class.php');  
$t = new Smarty;  
$t->assign("title","Hello World!");  
$content = $t->fetch("templates/index.htm");  
//这里的 fetch() 就是获取输出内容的函数,现在$content变量里面,就是要显示的内容了  
$fp = fopen("archives/2005/05/19/0001.html", "w");  
fwrite($fp, $content);  
fclose($fp);  
?>  

第二种方法:利用ob系列的函数。这里用到的函数主要是 ob_start(), ob_end_flush(), ob_get_content(),其中ob_start()是打开浏览器缓冲区的意思,打开缓冲后,所有来自PHP程序的非文件头信息均不会发送,而是保存在内部缓冲区,直到你使用了ob_end_flush().而这里最重要的一个函数,就是ob_get_contents(),这个函数的作用是获取缓冲区的内容,相当于上面的那个fetch(),道理一样的。代码:
<?php  
ob_start();  
echo "Hello World!";  
$content = ob_get_contents();//取得php页面输出的全部内容  
$fp = fopen("archives/2005/05/19/0001.html", "w");  
fwrite($fp, $content);  
fclose($fp);  
?>  
PHP 相关文章推荐
PHP4实际应用经验篇(4)
Oct 09 PHP
PHP XML error parsing SOAP payload on line 1
Jun 17 PHP
.htaccess文件保护实例讲解
Feb 06 PHP
php中++i 与 i++ 的区别
Aug 08 PHP
php删除与复制文件夹及其文件夹下所有文件的实现代码
Jan 23 PHP
解决php接收shell返回的结果中文乱码问题
Jan 23 PHP
PHP取余函数介绍MOD(x,y)与x%y
May 15 PHP
CI(CodeIgniter)框架中的增删改查操作
Jun 10 PHP
ThinkPHP字符串函数及常用函数汇总
Jul 18 PHP
php计算指定目录下文件占用空间的方法
Mar 13 PHP
Laravel框架中Blade模板的用法示例
Aug 30 PHP
smarty 原来也不过如此~~呵呵
Nov 25 #PHP
用PHP的ob_start();控制您的浏览器cache!
Nov 25 #PHP
PHP 常见郁闷问题答解
Nov 25 #PHP
PHP通用检测函数集合
Nov 25 #PHP
用PHP实现将GB编码转换为UTF8
Nov 25 #PHP
目录,文件操作详谈―PHP
Nov 25 #PHP
几个学习PHP的网址
Nov 25 #PHP
You might like
一个简单计数器的源代码
2006/10/09 PHP
PHP GD 图像处理组件的常用函数总结
2010/04/28 PHP
php图片处理:加水印、缩略图的实现(自定义函数:watermark、thumbnail)
2010/12/02 PHP
PHP中几种常见的超时处理全面总结
2012/09/11 PHP
PHP中mysqli_affected_rows作用行数返回值分析
2014/12/26 PHP
php使用Jpgraph绘制3D饼状图的方法
2015/06/10 PHP
php封装的图片(缩略图)处理类完整实例
2016/10/19 PHP
利用php + Laravel如何实现部署自动化详解
2017/10/11 PHP
json 实例详细说明教程
2009/10/31 Javascript
通过jQuery源码学习javascript(二)
2012/12/27 Javascript
jQuery带时间的日期控件代码分享
2015/08/26 Javascript
JavaScript程序中实现继承特性的方式总结
2016/06/24 Javascript
jquery自定义表单验证插件
2016/10/12 Javascript
jQuery 检查某个元素在页面上是否存在实例代码
2016/10/27 Javascript
Node.js开发第三方微信公众平台
2017/06/05 Javascript
[原创]jquery判断元素内容是否为空的方法
2018/05/04 jQuery
LayUi数据表格自定义赋值方式
2019/10/26 Javascript
vue2路由基本用法实例分析
2020/03/06 Javascript
JavaScript事件委托实现原理及优点进行
2020/08/29 Javascript
vue3.0自定义指令(drectives)知识点总结
2020/12/27 Vue.js
详解微信小程序「渲染层网络层错误」的解决方法
2021/01/06 Javascript
python中使用mysql数据库详细介绍
2015/03/27 Python
Python学习笔记整理3之输入输出、python eval函数
2015/12/14 Python
Python实现代码统计工具(终极篇)
2016/07/04 Python
Python3爬虫学习之MySQL数据库存储爬取的信息详解
2018/12/12 Python
python调用win32接口进行截图的示例
2020/11/11 Python
Python jieba库分词模式实例用法
2021/01/13 Python
python多线程爬取西刺代理的示例代码
2021/01/30 Python
程序运行正确, 但退出时却"core dump"了,怎么回事
2014/02/19 面试题
非常详细的C#面试题集
2016/07/13 面试题
鲜花方阵解说词
2014/02/13 职场文书
道德演讲稿
2014/05/21 职场文书
群众路线教师自我剖析材料
2014/09/29 职场文书
信访维稳工作汇报
2014/10/27 职场文书
党校学习个人总结
2015/02/15 职场文书
OpenCV-Python直方图均衡化实现图像去雾
2021/06/07 Python