- 1、本文档共23页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
thinkphp模板只解析$
篇一:ThinkPHP3.0模板解析详解2
ThinkPHP3.0 模板解析流程详解
作者:徐华德
Email:jjxuhuade@163.com
时间:2012-02-03
当我们在控制器中用$this-display();输出模板的时候,到模板解析成功注意经过了一下几个步骤。
1.在控制器中用$twidth:450px” width=“450px” alt=“thinkphp模板只解析$” title=“thinkphp模板只解析$”/
his-display();输出模板。
2.调用Action.class.php当中的display()方法,而此方法又调用了
3.核心类库中的View.class.php当中的display()方法。功能详解:
在这里用到了几个函数,tag(),B()函数,
T
函数:
$tag:行为扩展,是定义在核心\Think\Conf\tags.php文件里,用数组的形式,下标为行为扩展名,值是个数 组,里面的值是所定义的行为对象,执行的时候是依次用B执行
$params:参数,是tag函数里面B函数的参数,作用是在行为类run方法的参数,注意是引用类型。
行为扩展的配置文件:核心里Think\Conf\tags.php,是在项目初始化的时候在运行Think\Common\app_runtime.php这个文件的时候配置的,C(#39;extends#39;, include THINK_PATH.#39;Conf/tags.php#39;);
B($name, amp;$params)函数:执行具体的某个行为动作,并把amp;$params参数传给Behavior类中的run()方 法,作为参数。注意参数前amp;符合。
行为扩展里面的类文件都是系统在初始化的时候自动载入的,是系统初始化到Think\Lib\Core\Think.class.php 类里的run方法是自动载入的。
系统还在common.php里定义的一个自动载入的方法:是加载app_runtime.php时加载的。
系统定义的自动载入机制后,在调用B函数的时候,就可以直接实例化类了,无需定义路径了。
4.系统在在加载模板是调用了view类里的fetch方法,就是获取模板里的内容,首先是模板文件,怎么获取呢?我们一般在控制器里都不传文件名的,如:$this-display();就是通过此处 tag(#39;view_template#39;,$templateFile);行为扩展来定位的,是调用了LocationTemplateBehavior.class.php文件,里面读取C(#39;TMPL_FILE_NAME#39;),来获取模板文件的。而配置项#39;TMPL_FILE_NAME#39;,是系统初始化App.class.php是动态设置的,代码如下: C(#39;TMPL_FILE_NAME#39;,TEMPLATE_PATH.MODULE_NAME.DS.ACTION_NAME.C(#39;TMPL_TEMPLATE_SUFFIX#39;));
5.然后通过$this-tVar来获取模板变量,并且通过 tag(#39;view_parse#39;,$params),来解析模板及变量。
6.在ParseTemplateBehavior.class.php解析模板行为当中,用只要是调用了核心driver里的Think\Lib\Driver\Template\TemplateThink.class.php里的fetch方法来解析
7.而fetch($templateFile,$templateVar)方法的参数有两个,第一个是模板文件名,第二个是模板赋值变量。 它的作用是解析模板及标签,并判断是否需要生成缓存文件,最后是把模板变量分解成独立的变量代码如下:
8.其中在解析模板及标签的时候,调用了如下代码:
9.ThinkTemplate类位于核心目录下的 Template目录下,自定义标签都要继承此类。是主要的模板解析类,里面有很多方法主要功能是:
__set:模板配置赋值
__get:模板配置取值
assign:模板变量赋值
get:模板变量取值
parse:模板解析:返回解析后的模板内容,调用了以下方法:
parseLayout:检测并且替换布局标签lt;layout name=Public:header cache=60 /
parseCondition: 条件解析
autoBuildVar:创建变量,自动创建标签库的变量,如lt;volist里的name字段里的变量
parseVar:解析html页面中标签的变量,如果标签中使
文档评论(0)