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 相关文章推荐
BBS(php &amp; mysql)完整版(五)
Oct 09 PHP
PHP Zip压缩 在线对文件进行压缩的函数
May 26 PHP
PHP实现把数字ID转字母ID
Aug 12 PHP
19个超实用的PHP代码片段
Mar 14 PHP
php的curl封装类用法实例
Nov 07 PHP
PHP微信支付开发实例
Jun 22 PHP
PHP处理CSV表格文件的常用操作方法总结
Jul 01 PHP
PHP反射机制原理与用法详解
Feb 15 PHP
PHP实现批量删除(封装)
Apr 28 PHP
PHP抽象类与接口的区别详解
Mar 21 PHP
PHP与SQL语句写一句话木马总结
Oct 11 PHP
laravel框架模型中非静态方法也能静态调用的原理分析
Nov 23 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开发规范手册之PHP代码规范详解
2011/01/13 PHP
解析php dirname()与__FILE__常量的应用
2013/06/24 PHP
PHP文件上传操作实例详解
2016/09/27 PHP
Swoole扩展的6种模式深入详解
2021/03/04 PHP
再谈IE中Flash控件的自动激活 ObjectWrap
2007/03/09 Javascript
为你的网站增加亮点的9款jQuery插件推荐
2011/05/03 Javascript
jQuery中的.bind()、.live()和.delegate()之间区别分析
2011/06/08 Javascript
用简洁的jQuery方法toggleClass实现隔行换色
2014/10/22 Javascript
JavaScript中Cookies的相关使用教程
2015/06/04 Javascript
使用jquery/js获取iframe父子级、同级获取元素的方法
2016/08/05 Javascript
详解a++和++a的区别
2017/08/30 Javascript
用npm安装vue和vue-cli,并使用webpack创建项目的方法
2018/09/28 Javascript
angular 实现同步验证器跨字段验证的方法
2019/04/11 Javascript
jquery中为什么能用$操作
2019/06/18 jQuery
微信小程序实现拍照画布指定区域生成图片
2019/07/18 Javascript
JS/CSS实现字符串单词首字母大写功能
2019/09/03 Javascript
[37:22]DOTA2上海特级锦标赛D组资格赛#2 Liquid VS VP第一局
2016/02/28 DOTA
[47:02]2018DOTA2亚洲邀请赛3月29日 小组赛B组 VP VS paiN
2018/03/30 DOTA
django接入新浪微博OAuth的方法
2015/06/29 Python
浅析AST抽象语法树及Python代码实现
2016/06/06 Python
python 列表,数组和矩阵sum的用法及区别介绍
2018/06/28 Python
Python任务调度模块APScheduler使用
2020/04/15 Python
Python实例方法、类方法、静态方法区别详解
2020/09/05 Python
一款基于css3麻将筛子3D翻转特效的实例教程
2014/12/31 HTML / CSS
德国旅游网站:weg.de
2018/06/03 全球购物
意大利宠物用品购物网站:Bauzaar
2018/09/15 全球购物
会计电算化专业毕业生求职信范文
2013/12/10 职场文书
初中班主任经验交流材料
2014/05/16 职场文书
六一亲子活动总结
2014/07/01 职场文书
优秀会计求职信
2014/07/04 职场文书
2014年秋季开学典礼主持词
2014/08/02 职场文书
机关党员公开承诺书
2014/08/30 职场文书
党员个人剖析材料2014
2014/10/08 职场文书
公司车辆管理制度
2015/08/04 职场文书
《曾国藩家书》读后感——读家书,立家风
2019/08/21 职场文书
Redis遍历所有key的两个命令(KEYS 和 SCAN)
2021/04/12 Redis