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 相关文章推荐
检测png图片是否完整的php代码
Sep 06 PHP
php代码收集表单内容并写入文件的代码
Jan 29 PHP
PHP正确解析UTF-8字符串技巧应用
Nov 07 PHP
PHP flock 文件锁详细介绍
Dec 29 PHP
PHP禁止个别IP访问网站
Oct 30 PHP
php数据库备份还原类分享
Mar 20 PHP
PHP基于工厂模式实现的计算器实例
Jul 16 PHP
在CentOS系统上从零开始搭建WordPress博客的全流程记录
Apr 21 PHP
php+jQuery+Ajax简单实现页面异步刷新
Aug 08 PHP
详解php中空字符串和0之间的关系
Oct 23 PHP
PHP框架Laravel中实现supervisor执行异步进程的方法
Jun 07 PHP
YII2框架中添加自定义模块的方法实例分析
Mar 18 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
destoon实现调用自增数字从1开始的方法
2014/08/21 PHP
THINKPHP2.0到3.0有哪些改进之处
2015/01/04 PHP
分享常见的几种页面静态化的方法
2015/01/08 PHP
windows下的WAMP环境搭建图文教程(推荐)
2017/07/27 PHP
Jquery Ajax学习实例3 向WebService发出请求,调用方法返回数据
2010/03/16 Javascript
jquery attr 设定src中含有&amp;(宏)符号问题的解决方法
2011/07/26 Javascript
原生js和jQuery写的网页选项卡特效对比
2015/04/27 Javascript
javaScript中slice函数用法实例分析
2015/06/08 Javascript
JavaScript 对象深入学习总结(经典)
2015/09/29 Javascript
Javascript复制实例详解
2016/01/28 Javascript
省市联动效果的简单实现代码(推荐)
2016/06/06 Javascript
jQuery动态修改字体大小的方法【测试可用】
2016/09/09 Javascript
bootstrap输入框组件使用方法详解
2017/01/19 Javascript
js时间戳和c#时间戳互转方法(推荐)
2017/02/15 Javascript
微信小程序 动态绑定数据及动态事件处理
2017/03/14 Javascript
Vue.js结合Ueditor富文本编辑器的实例代码
2017/07/11 Javascript
angular4强制刷新视图的方法
2018/10/09 Javascript
小程序如何在不同设备上自适应生成海报的实现方法
2019/08/20 Javascript
vue使用nprogress实现进度条
2019/12/09 Javascript
如何修改Vue打包后文件的接口地址配置的方法
2020/04/22 Javascript
python3 flask实现文件上传功能
2020/03/20 Python
python中pika模块问题的深入探究
2018/10/13 Python
Python3.5装饰器典型案例分析
2019/04/30 Python
python cv2读取rtsp实时码流按时生成连续视频文件方式
2019/12/25 Python
python实现马丁策略的实例详解
2021/01/15 Python
利用Opencv实现图片的油画特效实例
2021/02/28 Python
Oracle快照(snapshot)
2015/03/13 面试题
实习护士自我鉴定
2013/10/13 职场文书
医药类个人求职的自我评价
2014/02/12 职场文书
奥林匹克的口号
2014/06/13 职场文书
2015年小学生新年寄语
2014/12/08 职场文书
区域销售经理岗位职责
2015/04/02 职场文书
小学运动会加油稿
2015/07/22 职场文书
公务员岗前培训心得体会
2016/01/08 职场文书
员工升职自我评价
2019/03/26 职场文书
golang 实现两个结构体复制字段
2021/04/28 Golang