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 相关文章推荐
15个小时----从修改程序到自己些程序
Oct 09 PHP
php的header和asp中的redirect比较
Oct 09 PHP
mysql_num_rows VS COUNT 效率问题分析
Apr 23 PHP
php实现12306余票查询、价格查询示例
Apr 17 PHP
PHP正则表达式替换站点关键字链接后空白的解决方法
Sep 16 PHP
php字符串分割函数用法实例
Mar 17 PHP
PHP多态代码实例
Jun 26 PHP
利用PHP访问带有密码的Redis方法示例
Feb 09 PHP
php文件上传及下载附带显示文件及目录功能
Apr 27 PHP
php注册系统和使用Xajax即时验证用户名是否被占用
Aug 31 PHP
PHP实现的数组和XML文件相互转换功能示例
Mar 15 PHP
php解决约瑟夫环算法实例分析
Sep 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
PHP几个数学计算的内部函数学习整理
2011/08/06 PHP
PHP判断IP并转跳到相应城市分站的方法
2015/03/25 PHP
php上传功能集后缀名判断和随机命名(强力推荐)
2015/09/10 PHP
php用户密码加密算法分析【Discuz加密算法】
2016/10/12 PHP
List Installed Software Features
2007/06/11 Javascript
基于jQuery的合并表格中相同文本的相邻单元格的代码
2011/04/06 Javascript
Enter回车切换输入焦点实现思路与代码兼容各大浏览器
2014/09/01 Javascript
angularJS结合canvas画图例子
2015/02/09 Javascript
javascript中定义类的方法详解
2015/02/10 Javascript
Javascript中的call()方法介绍
2015/03/15 Javascript
jquery计算鼠标和指定元素之间距离的方法
2015/06/26 Javascript
jQuery中animate的几种用法与注意事项
2016/12/12 Javascript
js实现hashtable的赋值、取值、遍历操作实例详解
2016/12/25 Javascript
JQuery实现定时刷新功能代码
2017/05/09 jQuery
详解vue项目构建与实战
2017/06/27 Javascript
Django中使用jquery的ajax进行数据交互的实例代码
2017/10/15 jQuery
js登录滑动验证的实现(不滑动无法登陆)
2018/01/03 Javascript
快速解决vue-cli在ie9+中无效的问题
2018/09/04 Javascript
图文讲解vue的v-if使用方法
2019/02/11 Javascript
微信小程序 授权登录详解(附完整源码)
2019/08/23 Javascript
浅谈Vue3.0之前你必须知道的TypeScript实战技巧
2019/09/11 Javascript
原生JavaScript实现拖动校验功能
2020/09/29 Javascript
vue中使用腾讯云Im的示例
2020/10/23 Javascript
python数据处理实战(必看篇)
2017/06/11 Python
Python使用当前时间、随机数产生一个唯一数字的方法
2017/09/18 Python
python中的变量如何开辟内存
2018/06/26 Python
python操作excel文件并输出txt文件的实例
2018/07/10 Python
Python 从一个文件中调用另一个文件的类方法
2019/01/10 Python
对Python中class和instance以及self的用法详解
2019/06/26 Python
python3 通过 pybind11 使用Eigen加速代码的步骤详解
2020/12/07 Python
CSS3中的注音对齐属性ruby-align用法指南
2016/07/01 HTML / CSS
开学典礼主持词
2014/03/19 职场文书
青安岗事迹材料
2014/05/14 职场文书
2014年团员学习十八大思想汇报
2014/09/13 职场文书
党员评议思想汇报
2014/10/08 职场文书
王金山在党的群众路线教育实践活动总结大会上的讲话稿
2014/10/25 职场文书