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 5.3.1 安装包 VC9 VC6不同版本的区别是什么
Jul 04 PHP
利用php+mcDropdown实现文件路径可在下拉框选择
Aug 07 PHP
PHP中HTML标签过滤技巧
Jan 07 PHP
实现获取http内容的php函数分享
Feb 16 PHP
PHP date()函数警告: It is not safe to rely on the system解决方法
Aug 20 PHP
PHP身份证校验码计算方法
Aug 10 PHP
PHP控制反转(IOC)和依赖注入(DI)
Mar 13 PHP
PHP下 Mongodb 连接远程数据库的实例代码
Aug 30 PHP
PHP 实现人民币小写转换成大写的方法及大小写转换函数
Nov 17 PHP
php 中htmlentities导致中文无法查询问题
Sep 10 PHP
用php定义一个数组最简单的方法
Oct 04 PHP
浅析PHP反序列化中过滤函数使用不当导致的对象注入问题
Feb 15 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代码的53条建议
2008/03/27 PHP
Yii 快速,安全,专业的PHP框架
2014/09/03 PHP
php抽象类使用要点与注意事项分析
2015/02/09 PHP
php简单判断两个字符串是否相等的方法
2015/07/13 PHP
学习php设计模式 php实现单例模式(singleton)
2015/12/07 PHP
PHP之将POST数据转化为字符串的实现代码
2016/11/03 PHP
Node.js实现在目录中查找某个字符串及所在文件
2014/09/03 Javascript
asp.net中oracle 存储过程(图文)
2015/08/12 Javascript
jquery实现的3D旋转木马特效代码分享
2015/08/25 Javascript
轻松实现Bootstrap图片轮播
2020/04/20 Javascript
AngularJs表单验证实例详解
2016/05/30 Javascript
JavaScript 数组- Array的方法总结(推荐)
2016/07/21 Javascript
Ajax基础知识详解
2017/02/17 Javascript
ES6字符串模板,剩余参数,默认参数功能与用法示例
2017/04/06 Javascript
angular.fromJson与toJson方法用法示例
2017/05/17 Javascript
js 提取某()特殊字符串长度的实例
2017/12/06 Javascript
jquery中ajax请求后台数据成功后既不执行success也不执行error的完美解决方法
2017/12/24 jQuery
React降级配置及Ant Design配置详解
2018/12/27 Javascript
解决vue的过渡动画无法正常实现问题
2019/10/31 Javascript
JavaScript Tab菜单实现过程解析
2020/05/13 Javascript
[27:02]2014 DOTA2国际邀请赛中国区预选赛 5 23 CIS VS LGD第三场
2014/05/24 DOTA
Django的session中对于用户验证的支持
2015/07/23 Python
Python的Tornado框架的异步任务与AsyncHTTPClient
2016/06/27 Python
200行自定义python异步非阻塞Web框架
2017/03/15 Python
python实现生成字符串大小写字母和数字的各种组合
2019/01/01 Python
Python连接Mysql进行增删改查的示例代码
2020/08/03 Python
详解使用Python写一个向数据库填充数据的小工具(推荐)
2020/09/11 Python
以特惠价提供在线奢侈品购物:FRMODA.com
2018/01/25 全球购物
德国2018年度最佳在线药房:Bodfeld Apotheke
2019/11/04 全球购物
Hotels.com泰国:酒店预订网站
2019/11/20 全球购物
运动会领导邀请函
2014/02/05 职场文书
毕业典礼主持词大全
2014/03/26 职场文书
七一建党日演讲稿
2014/09/05 职场文书
2015年度房地产工作总结
2015/04/09 职场文书
元旦主持词开场白
2015/05/29 职场文书
Android存储中最基本的文件存储方式
2022/04/30 Java/Android