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手册及PHP编程标准
Dec 17 PHP
用PHP控制用户的浏览器--ob*函数的使用说明
Mar 16 PHP
PHP数组的交集array_intersect(),array_intersect_assoc(),array_inter_key()函数的小问题
May 29 PHP
ajax 的post方法实例(带循环)
Jul 04 PHP
PHPMailer的主要功能特点和简单使用说明
Feb 17 PHP
Yii查询生成器(Query Builder)用法实例教程
Sep 04 PHP
将PHP的session数据存储到数据库中的代码实例
Jun 24 PHP
示例详解Laravel的注册重构
Aug 14 PHP
laravel 5.3中自定义加密服务的方案详解
May 09 PHP
基于php编程规范(详解)
Aug 17 PHP
visual studio code 调试php方法(图文详解)
Sep 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 Ajax乱码
2008/04/09 PHP
PHPLog php 程序调试追踪工具
2009/09/09 PHP
php实现可以设置中奖概率的抽奖程序代码分享
2014/01/19 PHP
浅析ThinkPHP的模板输出功能
2014/07/01 PHP
PHP中require和include路径问题详解
2014/12/25 PHP
Zend Framework实现具有基本功能的留言本(附demo源码下载)
2016/03/22 PHP
PHP微信开发之查询微信精选文章
2016/06/23 PHP
php无限级评论嵌套实现代码
2018/04/18 PHP
图片按比例缩放函数
2006/06/26 Javascript
js 通用javascript函数库整理
2011/08/14 Javascript
js/jquery去掉空格,回车,换行示例代码
2013/11/05 Javascript
jQuery验证插件validate使用方法详解
2020/09/13 Javascript
javascript和jQuery中的AJAX技术详解【包含AJAX各种跨域技术】
2016/12/15 Javascript
详解JSON和JSONP劫持以及解决方法
2019/03/08 Javascript
vue使用Proxy实现双向绑定的方法示例
2019/03/20 Javascript
Angular8 Http拦截器简单使用教程
2019/08/20 Javascript
基于纯JS实现多张图片的懒加载Lazy过程解析
2019/10/14 Javascript
基于vue实现微博三方登录流程解析
2020/11/04 Javascript
[01:04:31]DOTA2-DPC中国联赛定级赛 iG vs Magma BO3第二场 1月8日
2021/03/11 DOTA
分析在Python中何种情况下需要使用断言
2015/04/01 Python
Windows上使用virtualenv搭建Python+Flask开发环境
2016/06/07 Python
python中int与str互转方法
2018/07/02 Python
python3 小数位的四舍五入(用两种方法解决round 遇5不进)
2019/04/11 Python
python网络爬虫 CrawlSpider使用详解
2019/09/27 Python
python pycharm的安装及其使用
2019/10/11 Python
TensorFlow dataset.shuffle、batch、repeat的使用详解
2020/01/21 Python
使用TensorFlow直接获取处理MNIST数据方式
2020/02/10 Python
如何基于Python按行合并两个txt
2020/11/03 Python
应届生财务会计求职信
2013/11/05 职场文书
大学生的应聘自我评价
2013/12/13 职场文书
饭店工作计划书
2014/01/10 职场文书
总经理岗位职责描述
2014/02/08 职场文书
教师党员自我评价范文
2015/03/04 职场文书
上帝也疯狂观后感
2015/06/09 职场文书
Django+Celery实现定时任务的示例
2021/06/23 Python
Windows10安装Apache2.4的方法步骤
2022/06/25 Servers