ecshop模板工作原理与基本流程(二)
来源:互联网 发布:ubuntu和windows区别 编辑:程序博客网 时间:2024/04/30 06:31
ecshop模板工作原理与基本流程(一)简单介绍了,在有缓存的情况下,模板引擎的工作流程。
接下这我们重点看一下,在还没有生成缓存的情况下,ecshop的模板引擎是如何编译模板,标签替换、建立缓存,并输出视图的。
首先看一下模板引擎编译模板涉及到的文件、函数的位置和作用。
init.php
位置:includes/init.php
作用:这是系统的初始化文件,在加载这个文件的时候也对模板引擎进行了初始化。
index.php
位置:网站根目录
作用:可以看成是模板引擎的服务对象。
$smarty->display()
位置:/includes/cls_template.php cls_template类
作用:通过调用类中的其他方法,显示页面。(同一个模板可能有多个不同的缓存)
caches
位置:temp/caches/
作用: 默认的缓存存储目录
位置:temp/compiled/
作用: 默认的编译文件存储目录
编译与缓存
当发现没有需要的缓存文件之后,index.php会注册模板中需要的变量。
然后调用模板引擎的display()方法去显示网页。
display()方法并不会自己完成所有的工作,它的主要任务其实是和index.php进行交互,把index.php中的相关信息接收过来。
比如:display把index.php要显示的模板和缓存ID,告诉给fetch这个方法,由fetch方法去对模板进行处理,知道fetch把结果返回给display,它才进行下一步的工作。
fetch也不是最终干活的人,它接到display交给的任务以后,会分别对这些数据进行判断,找到模板的具体路径,对照系统当前的配置,例如是否是在调试模式下,模板是否是"str:"开头的(数据库中的标签),根据不同的情况进行不同的处理。
现在是该编译模板的时候了,但是fetch不会自己去编译。在不生成缓存的情况下。fetch把模板中的所有内容读出来,并交个fetch_str(这才是我们真正的的草根男一号)。并由它对模板中的标签进行替换。
如果还要生成编译文件和缓存,fetch会让make_compiled去编译模板(make_compiled也要调用fetch_str),在由fetch对编译后的结果进行缓存,并把数据返回给display.
dipaly终于等到了结果,收到fetch的结果后,再对结果中的动态内容进行处理。
最后把结果输出到浏览器。
- ecshop模板工作原理与基本流程(二)
- ecshop模板工作原理与基本流程(一)
- SpringBatch的基本工作流程(二)
- View的工作原理(二)----View的工作流程
- ECShop模板原理
- ECShop模板原理
- servlet工作原理与流程
- Struts(二)——STRUTS基本工作流程 .
- 浏览器工作原理之基本渲染流程
- node.js基本工作原理及流程
- Struts(二)工作原理和具体流程
- Struts(二)工作原理和具体流程
- Struts2工作原理与Struts2工作流程
- Git的基本工作流程二
- ECShop开发系列教程-ECShop模板原理
- ecshop模板的原理分析
- Scrapy工作原理(流程)
- View的工作原理(二)之 View的工作流程
- unity3d移动平台优化专题(2):不要使用实时光照
- MongoDB架构图解
- 条件变量
- C++学习心得(6)文件操作与文件流
- nyoj题目64:鸡兔同笼
- ecshop模板工作原理与基本流程(二)
- trust zone之我见
- JS 时间
- 音视频开发平台 视频录制技术
- linux下重启weblogic(关闭和启动)
- 快速排序c++
- ubuntu 安装sensors
- LeetCode OJ 之 Partition List (划分链表)
- ORA-01036: illegal variable name/number