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 的ArrayAccess接口 像数组一样来访问你的PHP对象
Oct 12 PHP
php设计模式 Builder(建造者模式)
Jun 26 PHP
基于empty函数的判断详解
Jun 17 PHP
php数组删除元素示例
Mar 21 PHP
phpword插件导出word文件时中文乱码问题处理方案
Aug 19 PHP
php调整服务器时间的方法
Apr 03 PHP
PHP获取数组最大值下标的方法
May 12 PHP
功能强大的PHP图片处理类(水印、透明度、旋转)
Oct 21 PHP
PHP中Trait及其应用详解
Feb 14 PHP
PHP yield关键字功能与用法分析
Jan 03 PHP
PHP消息队列实现及应用详解【队列处理订单系统和配送系统】
May 20 PHP
Laravel5.5 实现后台管理登录的方法(自定义用户表登录)
Sep 30 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
写一个用户在线显示的程序
2006/10/09 PHP
PHP使用pcntl_fork实现多进程下载图片的方法
2014/12/16 PHP
php页面缓存方法小结
2015/01/10 PHP
33道php常见面试题及答案
2015/07/06 PHP
php打开本地exe程序,js打开本地exe应用程序,并传递相关参数方法
2018/02/06 PHP
响应鼠标变换表格背景或者颜色的代码
2009/03/30 Javascript
jQuery+CSS 半开折叠效果原理及代码(自写)
2013/03/04 Javascript
node.js WEB开发中图片验证码的实现方法
2014/06/03 Javascript
返回函数的JavaScript函数
2016/06/14 Javascript
KnockoutJS 3.X API 第四章之数据控制流foreach绑定
2016/10/10 Javascript
Canvas + JavaScript 制作图片粒子效果
2017/02/08 Javascript
js实现自动图片轮播代码
2017/03/22 Javascript
pace.js和NProgress.js两个加载进度插件的一点小总结
2018/01/31 Javascript
Vue的事件响应式进度条组件实例详解
2018/02/04 Javascript
JS实现字符串翻转的方法分析
2018/08/31 Javascript
说说如何在Vue.js中实现数字输入组件的方法
2019/01/08 Javascript
解决Vue动态加载本地图片问题
2019/10/09 Javascript
使用 Element UI Table 的 slot-scope方法
2019/10/10 Javascript
js实现简单点赞操作
2020/03/17 Javascript
[01:13]这,就是刀塔
2014/07/16 DOTA
PyQt5打开文件对话框QFileDialog实例代码
2018/02/07 Python
Python实现的简单计算器功能详解
2018/08/25 Python
PyQt5实现简易电子词典
2019/06/25 Python
python3.6使用SMTP协议发送邮件
2020/05/20 Python
详解HTML5中垂直上下居中的解决方案
2017/12/20 HTML / CSS
方正Java笔试题
2014/07/03 面试题
大学本科毕业生求职信范文
2013/12/18 职场文书
读书心得体会
2013/12/28 职场文书
妇联主席先进事迹
2014/05/18 职场文书
节能标语大全
2014/06/21 职场文书
2014年防汛工作总结
2014/12/08 职场文书
2015年幼儿园后勤工作总结
2015/04/25 职场文书
埃及王子观后感
2015/06/16 职场文书
开票证明
2015/06/23 职场文书
python自动化测试之Selenium详解
2022/03/13 Python
CSS中calc(100%-100px)不加空格不生效
2023/05/07 HTML / CSS