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 08 PHP
php网上商城购物车设计代码分享
Feb 15 PHP
PHP处理excel cvs表格的方法实例介绍
May 13 PHP
解决FastCGI 进程超过了配置的活动超时时限的问题
Jul 03 PHP
PHP实现把数字ID转字母ID
Aug 12 PHP
destoon出现验证码不显示时的紧急处理方法
Aug 22 PHP
php实现curl模拟ftp上传的方法
Jul 29 PHP
PHP实现删除字符串中任何字符的函数
Aug 11 PHP
简单解析PHP程序的运行流程
Jun 23 PHP
PHP使用phpunit进行单元测试示例
Sep 23 PHP
PHP设计模式(七)组合模式Composite实例详解【结构型】
May 02 PHP
PHP copy函数使用案例代码解析
Sep 01 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 裁剪图片成固定大小代码方法
2009/09/09 PHP
写出高质量的PHP程序
2012/02/04 PHP
PHP URL参数获取方式的四种例子
2014/02/28 PHP
PHP图像识别技术原理与实现
2016/10/27 PHP
Swoole4.4协程抢占式调度器详解
2019/05/23 PHP
Iframe thickbox2.0使用的方法
2009/03/05 Javascript
JavaScript 轻松搞定快捷留言功能 只需一行代码
2010/04/01 Javascript
复制js对象方法(详解)
2013/07/08 Javascript
jQuery中:contains选择器用法实例
2014/12/30 Javascript
javascript中定义类的方法详解
2015/02/10 Javascript
JQuery中DOM事件冒泡实例分析
2015/06/13 Javascript
JavaScript中调用函数的4种方式代码实例
2015/07/08 Javascript
浅析函数声明和函数表达式——函数声明的声明提前
2016/05/03 Javascript
Bootstrap实现弹性搜索框
2016/07/11 Javascript
AngularJS基础 ng-mouseenter 指令示例代码
2016/08/02 Javascript
Bootstrap栅格系统简单实现代码
2017/03/06 Javascript
微信小程序实现的涂鸦功能示例【附源码下载】
2018/01/12 Javascript
[20:30]职业巡回赛回顾
2018/08/09 DOTA
python学习数据结构实例代码
2015/05/11 Python
python编程开发之类型转换convert实例分析
2015/11/13 Python
设置python3为默认python的方法
2018/10/31 Python
python random从集合中随机选择元素的方法
2019/01/23 Python
python生成每日报表数据(Excel)并邮件发送的实例
2019/02/03 Python
Python Django框架模板渲染功能示例
2019/11/08 Python
Python列表倒序输出及其效率详解
2020/03/04 Python
Python socket连接中的粘包、精确传输问题实例分析
2020/03/24 Python
使用keras和tensorflow保存为可部署的pb格式
2020/05/25 Python
纯CSS改变webkit内核浏览器的滚动条样式
2014/04/17 HTML / CSS
ALLSAINTS英国官网:伦敦新锐潮流品牌
2016/09/19 全球购物
印尼太阳百货公司网站:Matahari
2018/02/04 全球购物
联想香港官方网站及网店:Lenovo香港
2018/04/13 全球购物
课程改革实施方案
2014/03/16 职场文书
2015年基层党支部工作总结
2015/05/21 职场文书
圣诞晚会主持词开场白
2015/05/28 职场文书
先进个人事迹材料(2016推荐版)
2016/03/01 职场文书
如何用PHP实现分布算法之一致性哈希算法
2021/05/26 PHP