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 相关文章推荐
Ajax+PHP边学边练 之五 图片处理
Dec 03 PHP
PHP和JAVA中的重载(overload)和覆盖(override) 介绍
Mar 01 PHP
web目录下不应该存在多余的程序(安全考虑)
May 09 PHP
解析:php调用MsSQL存储过程使用内置RETVAL获取过程中的return值
Jul 03 PHP
PHP中unset,array_splice删除数组中元素的区别
Jul 28 PHP
PHP 前加at符合@的作用解析
Jul 31 PHP
php实现异步数据调用的方法
Dec 24 PHP
php上传图片生成缩略图(GD库)
Jan 06 PHP
postfixadmin忘记密码后的修改密码方法详解
Jul 20 PHP
php fread读取文件注意事项
Sep 24 PHP
thinkPHP5.1框架路由::get、post请求简单用法示例
May 06 PHP
php去除deprecated的实例方法
Nov 17 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/03/02 PHP
分享一个超好用的php header下载函数
2014/01/31 PHP
php 判断服务器操作系统的类型
2014/02/17 PHP
javascript KeyDown、KeyPress和KeyUp事件的区别与联系
2009/12/03 Javascript
js弹窗代码 可以指定弹出间隔
2010/07/03 Javascript
jquery ajax学习笔记2 使用XMLHttpRequest对象的responseXML
2011/10/16 Javascript
javascript闭包的高级使用方法实例
2013/07/04 Javascript
把字符串按照特定的字母顺序进行排序的js代码
2014/01/28 Javascript
js图片处理示例代码
2014/05/12 Javascript
JavaScript常用脚本汇总(一)
2015/03/04 Javascript
jQuery实现多级下拉菜单jDropMenu的方法
2015/08/28 Javascript
JSON遍历方式实例总结
2015/12/07 Javascript
jQuery模仿阿里云购买服务器选择购买时间长度的代码
2016/04/29 Javascript
js弹出框、对话框、提示框、弹窗实现方法总结(推荐)
2016/05/31 Javascript
跨域请求的完美解决方法(JSONP, CORS)
2016/06/12 Javascript
用JavaScript实现让浏览器停止载入页面的方法
2017/01/19 Javascript
js自定义瀑布流布局插件
2017/05/16 Javascript
tangram.js库实现js类的方式实例分析
2018/01/06 Javascript
Angularjs实现多图片上传预览功能
2018/07/18 Javascript
详解vue-router数据加载与缓存使用总结
2018/10/29 Javascript
Node.js实现批量下载图片简单操作示例
2020/01/18 Javascript
TypeScript魔法堂之枚举的超实用手册
2020/10/29 Javascript
[06:59]DOTA2-DPC中国联赛3月7日Recap集锦
2021/03/11 DOTA
Python可变参数函数用法实例
2015/07/07 Python
Python中Iterator迭代器的使用杂谈
2016/06/20 Python
利用python打开摄像头及颜色检测方法
2018/08/03 Python
python多线程http压力测试脚本
2019/06/25 Python
pymysql模块使用简介与示例
2020/11/17 Python
戴森美国官网:Dyson美国
2016/09/11 全球购物
递归实现回文判断(如:abcdedbca就是回文,判断一个面试者对递归理解的简单程序)
2013/04/28 面试题
介绍一下Prototype的$()函数,$F()函数,$A()函数都是什么作用?
2014/03/05 面试题
毕业自我鉴定怎么写
2014/03/25 职场文书
2014个人年度工作总结范文
2014/12/24 职场文书
详解Redis实现限流的三种方式
2021/04/27 Redis
i5-10400f处理相当于i7多少水平
2022/04/19 数码科技
python+opencv实现目标跟踪过程
2022/06/21 Python