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 相关文章推荐
PHP 面向对象 PHP5 中的常量
May 05 PHP
PHP解析目录路径的3个函数总结
Nov 18 PHP
PHP读取txt文本文件并分页显示的方法
Mar 11 PHP
PHP随机生成信用卡卡号的方法
Mar 23 PHP
PHP实现简单爬虫的方法
Jul 29 PHP
PHP中PDO连接数据库中各种DNS设置方法小结
May 13 PHP
PHP中session跨子域的三种实现方法
Jul 25 PHP
简单谈谈PHP中的trait
Feb 25 PHP
PHP网站自动化配置的实现方法(必看)
May 27 PHP
PHP实现正则表达式分组捕获操作示例
Feb 03 PHP
详解PHP版本兼容之openssl调用参数
Jul 25 PHP
yii2的restful api路由实例详解
May 14 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实现多服务器session共享之NFS共享的方法
2007/03/16 PHP
PHP数组排序函数合集 以及它们之间的联系分析
2013/06/27 PHP
PHP批量删除jQuery操作
2017/07/23 PHP
PHP实现登录验证码校验功能
2018/05/17 PHP
ThinkPHP5.0 图片上传生成缩略图实例代码说明
2018/06/20 PHP
PHP封装的简单连接MongoDB类示例
2019/02/13 PHP
发现的以前不知道的函数
2006/09/19 Javascript
js预载入和JavaScript Image()对象使用介绍
2011/08/28 Javascript
原生JS实现表单checkbook获取已选择的值
2013/07/21 Javascript
JavaScript中访问节点对象的方法有哪些如何使用
2013/09/24 Javascript
如何在指定的地方插入html内容和文本内容
2013/12/23 Javascript
Nodejs学习笔记之NET模块
2015/01/13 NodeJs
jQuery简单实现遍历数组的方法
2015/04/14 Javascript
JavaScript数据推送Comet技术详解
2016/04/07 Javascript
Bootstrap每天必学之附加导航(Affix)插件
2016/04/25 Javascript
基于JS实现Android,iOS一个手势动画效果
2016/04/27 Javascript
jquery获取所有选中的checkbox实现代码
2016/05/26 Javascript
angular.js分页代码的实例
2016/07/27 Javascript
AngularJS中比较两个数组是否相同
2016/08/24 Javascript
如何选择适合你的JavaScript框架
2017/11/20 Javascript
vue组件开发props验证的实现
2019/02/12 Javascript
微信小程序实现传递多个参数与事件处理
2019/08/12 Javascript
js实现转动骰子模型
2019/10/24 Javascript
微信小程序中网络请求缓存的解决方法
2019/12/29 Javascript
python 实现得到当前时间偏移day天后的日期方法
2018/12/31 Python
python 将对象设置为可迭代的两种实现方法
2019/01/21 Python
解决matplotlib.pyplot在Jupyter notebook中不显示图像问题
2020/04/22 Python
在vscode中启动conda虚拟环境的思路详解
2020/12/25 Python
Oakley官网:运动太阳镜、雪镜和服装
2016/09/30 全球购物
美国最大的家庭鞋类零售商之一:Shoe Carnival
2017/10/06 全球购物
FitFlop美国官网:英国符合人体工学的鞋类品牌
2018/10/05 全球购物
SneakerStudio英国:最佳运动鞋商店
2019/05/22 全球购物
酒鬼酒广告词
2014/03/21 职场文书
《社戏》教学反思
2014/04/15 职场文书
商家认证委托书格式
2014/10/16 职场文书
TS 类型收窄教程示例详解
2022/09/23 Javascript