View.class.php

/**

* 加载模板和页面输出 可以返回输出内容

* @access public

* @param string $templateFile 模板文件名

* @param string $charset 模板输出字符集

* @param string $contentType 输出类型

* @param string $content 模板输出内容

* @param string $prefix 模板缓存前缀

* @return mixed

*/

public function display($templateFile='',$charset='',$contentType='',$content='',$prefix='') {

G('viewStartTime');

// 视图开始标签

Hook::listen('view_begin',$templateFile);

// 解析并获取模板内容

$content = $this->fetch($templateFile,$content,$prefix);

// 输出模板内容

$this->render($content,$charset,$contentType);

// 视图结束标签

Hook::listen('view_end');

}

/**

* 解析和获取模板内容 用于输出

* @access public

* @param string $templateFile 模板文件名

* @param string $content 模板输出内容

* @param string $prefix 模板缓存前缀

* @return string

*/

public function fetch($templateFile='',$content='',$prefix='') {

if(empty($content)) {

$templateFile = $this->parseTemplate($templateFile);

// 模板文件不存在直接返回

if(!is_file($templateFile)) E(L('_TEMPLATE_NOT_EXIST_').':'.$templateFile);

}

// 页面缓存

ob_start();

ob_implicit_flush(0);

if('php' == strtolower(C('TMPL_ENGINE_TYPE'))) { // 使用PHP原生模板

$_content = $content;

// 模板阵列变量分解成为独立变量

extract($this->tVar, EXTR_OVERWRITE);

// 直接载入PHP模板

empty($_content)?include $templateFile:eval('?>'.$_content);

}else{

// 视图解析标签

$params = array('var'=>$this->tVar,'file'=>$templateFile,'content'=>$content,'prefix'=>$prefix);

Hook::listen('view_parse',$params);

}

// 获取并清空缓存

$content = ob_get_clean();

// 内容过滤标签

Hook::listen('view_filter',$content);

// 输出模板文件

return $content;

}

接下来和《

ThinkPHP生成HTML静态文件和模板缓存的过程

》的过程一样,只不过在用到WriteHtmlCacheBehavior类

WriteHtmlCacheBehavior.class.php

/**

* 系统行为扩展:静态缓存写入

*/

class WriteHtmlCacheBehavior {

// 行为扩展的执行入口必须是run

public function run(&$content){

if(C('HTML_CACHE_ON') && defined('HTML_FILE_NAME')) {

//静态文件写入

Storage::put(HTML_FILE_NAME , $content,'html');

}

}

}

这里读取了,配置中

HTML_CACHE_ON来判断是否要生成静态HTML文件

thinkphp html php文件,ThinkPHP生成静态HTML文件相关推荐

  1. freemarker html 乱码,Freemarker生成静态html文件及中文乱码的问题.pdf

    Freemarker生成静态html文件及中文乱码的问题,freemarker静态化页面,freemarker静态化,freemarker乱码,freemarker静态方法,freemarker中文乱 ...

  2. vue生成静态js文件_如何立即使用Vue.js生成静态网站

    vue生成静态js文件 by Ondřej Polesný 通过OndřejPolesný 如何立即使用Vue.js生成静态网站 (How to generate a static website w ...

  3. Freemarker生成静态化文件

    页面 test1.ftl <!DOCTYPE html> <html> <head><meta charset="utf-8">&l ...

  4. automake生成静态库文件_Automake 详解

    automake配置 一.安装 命令:sudo apt-get install automake 二.配置过程 1. 使用Autoscan工具生成configure.ac文件 命令: autoscan ...

  5. automake生成静态库文件_动手 | 奶奶级的动态库入门

    程序编译过程 库文件 静态链接和动态链接的区别? 从0开始 - 创建和使用静态链接库 创建静态库项目 向静态库中添加文件 编译静态库 创建引用静态库的C++控制台应用 在应用中使用静态库功能 从0开始 ...

  6. PHP代码为什么不能直接保存HTML文件——PHP生成静态页面教程

    1.服务器会根据文件的后缀名去进行解析,如果是HTML文件则服务器不会进行语法解析,而是直接输出到浏览器. 2.如果一个页面中全部都是HTML代码而没有需要解析的PHP语法,则没有必要保存为PHP文件 ...

  7. 生成html页面的ftl文件,FreeMarker生成静态HTML页面的工具类FreeMarkerUtil

    FreeMarker生成静态HTML页面的工具类FreeMarkerUtil 一.FreeMarkerUtil工具类: import com.huaxia.entity.News; import co ...

  8. automake生成静态库文件_基于CocoaPods的组件化原理及私有库实践

    轮子为什么会存在 智人能在残酷的进化大战中存活下来,原因之一就是智人懂得将知识沉淀成外物,辅助彼此之间的合作,从而使得整个群体产生了规模效应,即1+1>2的效果. 从一个角度上说,石器时代是基于 ...

  9. 解压与压缩ramdisk.img文件,生成uramdisk.img文件

    1. 在myandroid/out/target/product/imx51_bbg目录下可以找到要解压的ramdisk.img文件. 通过file命令可以查看ramdisk.img文件的类型: ro ...

最新文章

  1. 谷歌全新轻量级新模型ALBERT刷新三大NLP基准
  2. ASP.NET BookMark
  3. Expect 安装 on centos7
  4. 健康研究总结摘录专题
  5. java退出循环吗,在Java中退出循环
  6. 10 大方法,让您的客服中心提供更出色的服务
  7. inavFilter 惯导融合算法
  8. SiteServer CMS 新版本 V6.15(2020年6月1日发布)
  9. 【无线lora模块星型组网】lora无线模块专利技术 跳频扩频 支持200节点并发
  10. Java 8 方法引用 (Method Reference)快速介绍与示例
  11. java set collection_Java的Collection接口和Set接口?
  12. 金橙子打标卡二次开发应用
  13. 计算机毕业设计ssm汽车租赁管理系统mfobv系统+程序+源码+lw+远程部署
  14. Expandable的条目存在抢点击事件的控件
  15. linux怎样压缩文件夹加密文件,linux下文件加密压缩和解压的方法
  16. 苹果CMS绑定分类失败,刷新就丢失!
  17. Apache Log4j 2.0-rc1 发布
  18. [21S01][1136] Column count doesn‘t match value count at row 1 报错分析
  19. Drop Shipment PO以及Replenishment PO有何异同?
  20. 关于学计算机趣味段子,让你开怀大笑的段子:幽默风趣,读一遍笑一遍!

热门文章

  1. 大数据学习要知道的十大发展趋势,以及学习大数据的几点建议
  2. springcloud-05-ribbon中不使用eureka
  3. Android系统源码学习——源码目录结构介绍
  4. 零基础学Java的10个方法
  5. 六款值得推荐的Android开源框架简介
  6. Javascript验证上传图片大小[前台处理]
  7. [转]关于java 内存泄露
  8. JUnit 4 与 JUnit 3
  9. 探索性数据分析入门_入门指南:R中的探索性数据分析
  10. leetcode 1239. 串联字符串的最大长度