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 相关文章推荐
我的论坛源代码(十)
Oct 09 PHP
php模板之Phpbean的目录结构
Jan 10 PHP
php中使用exec,system等函数调用系统命令的方法(不建议使用,可导致安全问题)
Sep 07 PHP
php二维数组排序与默认自然排序的方法介绍
Apr 27 PHP
php实现的网络相册图片防盗链完美破解方法
Jul 01 PHP
Smarty实现页面静态化(生成HTML)的方法
May 23 PHP
php mysqli查询语句返回值类型实例分析
Jun 29 PHP
PHP实现限制IP访问及提交次数的方法详解
Jul 17 PHP
Laravel模型事件的实现原理详解
Mar 14 PHP
PHP实现的支付宝支付功能示例
Mar 26 PHP
PHP利用缓存处理用户注册时的邮箱验证,成功后用户数据存入数据库操作示例
Dec 31 PHP
php设计模式之组合模式实例详解【星际争霸游戏案例】
Mar 27 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
VML绘图板②脚本--VMLgraph.js、XMLtool.js
2006/10/09 PHP
URL Rewrite的设置方法
2007/01/02 PHP
php模块memcache和memcached区别分析
2011/06/14 PHP
javascript异步编程的4种方法
2014/02/19 Javascript
微信小程序 开发指南详解
2016/09/27 Javascript
利用js的闭包原理做对象封装及调用方法
2017/04/07 Javascript
vue路由懒加载的实现方法
2018/03/12 Javascript
JS+HTML5实现获取手机验证码倒计时按钮
2018/08/08 Javascript
javascript定时器的简单应用示例【控制方块移动】
2019/06/17 Javascript
vue中渲染对象中属性时显示未定义的解决
2020/07/31 Javascript
vue 使用vant插件做tabs切换和无限加载功能的实现
2020/11/04 Javascript
[45:15]Optic vs VP 2018国际邀请赛淘汰赛BO3 第一场 8.24
2018/08/25 DOTA
在Django的form中使用CSS进行设计的方法
2015/07/18 Python
Python编程实现二叉树及七种遍历方法详解
2017/06/02 Python
python模块之time模块(实例讲解)
2017/09/13 Python
Python 快速实现CLI 应用程序的脚手架
2017/12/05 Python
python爬虫爬取某站上海租房图片
2018/02/04 Python
Python OpenCV处理图像之图像像素点操作
2018/07/10 Python
解决python通过cx_Oracle模块连接Oracle乱码的问题
2018/10/18 Python
Python实现字符串匹配的KMP算法
2019/04/04 Python
python批量识别图片指定区域文字内容
2019/04/30 Python
python实现五子棋游戏(pygame版)
2020/01/19 Python
CSS3媒体查询Media Queries基础学习教程
2016/02/29 HTML / CSS
CSS3 Notes: -webkit-box-reflect实现倒影的实例
2016/12/08 HTML / CSS
html5中的一些标签学习(心得)
2016/10/18 HTML / CSS
荷兰最大的多品牌男装连锁店:Adam Brandstore
2019/12/31 全球购物
What is view? why do we have view?
2012/06/22 面试题
市三好学生主要事迹
2014/01/28 职场文书
2014机关干部学习“焦裕禄精神”思想汇报
2014/09/19 职场文书
销售助理岗位职责
2015/02/11 职场文书
2015年大学社团工作总结
2015/04/09 职场文书
欢送会主持词
2015/07/01 职场文书
vue-cli4.5.x快速搭建项目
2021/05/30 Vue.js
利用python进行数据加载
2021/06/20 Python
python中的3种定义类方法
2021/11/27 Python
Z-Order加速Hudi大规模数据集方案分析
2022/03/31 Servers