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缩略图等比例无损压缩,可填充空白区域补充色
Jun 10 PHP
php 阴历-农历-转换类代码
Jan 16 PHP
PHP正确解析UTF-8字符串技巧应用
Nov 07 PHP
PHP中spl_autoload_register函数的用法总结
Nov 07 PHP
PHP限制页面只能在微信自带浏览器访问的代码
Jan 15 PHP
基于PHP实现假装商品限时抢购繁忙的效果
Oct 16 PHP
php curl常用的5个经典例子
Jan 20 PHP
PHP7扩展开发教程之Hello World实现方法示例
Aug 03 PHP
Yii2.0 RESTful API 基础配置教程详解
Dec 26 PHP
PHP实现浏览器格式化显示XML的方法示例
Jan 22 PHP
laravel 实现用户登录注销并限制功能
Oct 24 PHP
PHP实现Snowflake生成分布式唯一ID的方法示例
Aug 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
VML绘图板②脚本--VMLgraph.js、XMLtool.js
2006/10/09 PHP
自动把纯文本转换成Web页面的php代码
2009/08/27 PHP
PHP实现动态删除XML数据的方法示例
2018/03/30 PHP
thinkPHP框架中layer.js的封装与使用方法示例
2019/01/18 PHP
Javascript和Ajax中文乱码吐血版解决方案
2009/12/21 Javascript
javascript+mapbar实现地图定位
2010/04/09 Javascript
Javascript JSQL,SQL无处不在,
2010/05/05 Javascript
javascript AOP 实现ajax回调函数使用比较方便
2010/11/20 Javascript
javascript 拖动表格行实现代码
2011/05/05 Javascript
js string 转 int 注意的问题小结
2013/08/15 Javascript
一个简单的jquery进度条示例
2014/04/28 Javascript
javascript数据类型验证方法
2015/12/31 Javascript
jQuery File Upload文件上传插件使用详解
2016/12/06 Javascript
Bootstrap框架建立树形菜单(Tree)的实例代码
2017/10/30 Javascript
Layui组件Table绑定行点击事件和获取行数据的方法
2018/08/19 Javascript
vue动态改变背景图片demo分享
2018/09/13 Javascript
微信小程序开发(三):返回上一级页面并刷新操作示例【页面栈】
2020/06/01 Javascript
关于JavaScript数组去重的一些理解汇总
2020/09/10 Javascript
python发送邮件接收邮件示例分享
2014/01/21 Python
Python中使用HTMLParser解析html实例
2015/02/08 Python
浅谈function(函数)中的动态参数
2017/04/30 Python
Python入门_条件控制(详解)
2017/05/16 Python
Python实现的读取文件内容并写入其他文件操作示例
2019/04/09 Python
pytorch 实现在预训练模型的 input上增减通道
2020/01/06 Python
Python 实现网课实时监控自动签到、打卡功能
2020/03/12 Python
法国综合购物网站:RueDuCommerce
2016/09/12 全球购物
法国面料和小百货在线商店:Mondial Tissus
2019/03/23 全球购物
英国旅行箱包和行李箱购物网站:Travel Luggage & Cabin Bags
2019/08/26 全球购物
物流管理专业毕业生自荐信
2014/03/04 职场文书
预备党员学习十八届三中全会精神思想汇报
2014/09/13 职场文书
学生会干部自我鉴定2014
2014/09/18 职场文书
银行职员工作失误检讨书
2014/10/14 职场文书
2015年银行工作总结范文
2015/04/01 职场文书
求职自我评价参考范文
2019/05/16 职场文书
详解Flask开发技巧之异常处理
2021/06/15 Python
Windows11性能真的上涨35%? 桌面酷睿i9实测结果公开
2021/11/21 数码科技