PHP技巧:详解phplib模板使用过程及运行原理

index.htm文件内容:

以下为引用的内容:

<html>
<head>
<body>
<!-- BEGIN RowSort -->
{SortList}<br>
<!-- END RowSort -->
</body>
</head>
</html>

index.php内容:

<?
$t->set_file ("Index", "index.htm");
$t->set_block("Index", "RowSort", "RowsSort");
..............................................
.................$list_sort...................
$t->set_var("SortList", $list_sort);
$t->parse("RowsSort", "RowSort", true);
..............................................
..............................................
$t->parse("OUT", "Index");
$t->p("OUT");
?>

详细分析过程:

一、$t->set_file ("Index", "index.htm"); $this->file[index] = index.htm

二、$t->set_block("Index", "RowSort", "RowsSort");

1、载入index文件index.htm内容并赋给变量$this->varvals[index]

2、$str = $this->varvals[index]获取模板文件内容

3、用preg_match_all函数来匹配模板文件中对应的block(RowSort)里的内容,并存储到$m[1][0]中

4、lock(RowSort)里的内容(包括头和尾)替换为{RowSort}

5、变量$this->varvals[RowSort] = $m[1][0] ,   $this->varkeys[RowSort] = /{RowSort}/

6、变量$this->varvals[index] = $str(内容已发生改变,见第4步) ,   $this->varkeys[index] = /{index}/

三、$t->set_var("SortList", $list_sort);

设置$this->varvals[SortList] = $list_sort

设置$this->varkeys[SortList] = /{SortList}/

四、$t->parse("RowsSort", "RowSort", true);(此操作根据sort大小重复进行)

1、利用subst函数把$this->varvals数组中的所有变量值对其中可能含有的特殊字符\和$进行处理(\和$分别替换为\\和\$,这样可以确保下一步的preg_replace不出现意外),并赋给$varvals_quoted数组

2、$str = $this->varvals[RowSort]

3、我们可以看出此时$str中含有一个{SortList},而由三:$this->varkeys[SortList] = /{SortList}/,$this->varvals[SortList] = $list_sort

4、可见经过preg_replace我们得到的$str是已经解析了PHP模板变量{SortList}之后的内容了,返回$str

5、给$this->varvals[RowSort]进行延续赋值   //这里有个问题大家可能会考虑到就是显示的时候最开始那个{RowSort}未被解析,不用担心,phplib有finish函数会对它根据你的要求进行处理

五、$t->parse("OUT", "Index");

1、可以看出,这时$this->varvals[index]中有一个PHP模板变量要进行解析,即{RowSort}

2、而在前面几步中,我们已经把$this->varvals[RowSort]的内容解析好

3、这样以来,我们把全部PHP模板变量均已解析后的内容赋给变量$this->varvals[OUT]

六、$t->p["OUT"];

显然phplib中p函数即为输出函数,我们直接把$this->varvals[OUT]输出即可

//这里要注意的是输出之前有个phplib自动进行的动作,就是对未被解析的PHP模板变量根据你的要求进行处理。

时间: 2024-09-20 00:40:14

PHP技巧:详解phplib模板使用过程及运行原理的相关文章

轻松快捷 Photoshop中的快捷键技巧详解

技巧|详解 Photoshop中的快捷键技巧虽已是老生常谈,但是网上通常都是简单讲述,本文将从应用功能出发详细讲解这些常用的快捷键的使用.相信对大家都会有帮助. ■ 你可以用以下的快捷键来快速浏览你的图像: Home卷动至图像的左上角:End卷动至图像的右下角:Page UP卷动至图像的上方:Page Down卷动至图像的下方:Ctrl+Page Up卷动至图像的左方:Ctrl+Page Down卷动至图像的右方. ■ 按Ctrl键+Alt键+0键即可使图像按1:1比例显示. ■ 当你想"紧排&

详解php的启动过程

启动, 终止, 以及其中的一些点 在本书中, 你已经多次使用MINIT函数在php加载你扩展的共享库时执行初始化任务. 在第1章"php的生命周期"中, 你还学习了其他三个启动/终止函数, 与MINIT对应的是MSHUTDOWN, 另外还有一对RINIT/RSHUTDOWN方法在每个页面请求启动和终止时被调用. 生命周期 除了这四个直接链接到模块结构的函数外, 还有两个函数仅用于线程环境, 用来处理每个线程的启动和终止, 以及它们使用的似有存储空间.开始之前, 首先将你的php扩展骨架

PS新手教程:通道混和器的应用技巧详解

PS新手教程:通道混和器的应用技巧详解 一.归纳的几个要点 根据通道和三原色原理,有规律(在头脑里一定要熟记!): 在RGB颜色模式中, 通道红--越亮画面就越红少青;越暗就越青少红; 通道绿--越亮画面就越绿少品;越暗就越品少绿; 通道蓝--越亮画面就越蓝少黄;越暗就越黄少蓝; (这个规律正如在曲线中,对R红.G绿.B蓝曲线的调整一样) 通道混和器的规律有: 规律1: 在通道混和器中,如果对某通道始终有等式成立: 红色百分比%+绿色百分比%+蓝色百分比%=总计100% 那么,该通道的中性灰的颜

PS字体的层次感小技巧详解

  PS字体的层次感小技巧详解 效果图如下 具体的制作步骤如下: 步骤1:打开PS ,建立一个大小合适的图层. 步骤2:输入 A.B.C.D四个字母,分别打出来;并记得复制一层; 步骤3:画一个矩形,进行透视,分别调整字母的大小 步骤4:ABCD四个字母在按住Shift键进行水平移动,使四个字母进行叠加; 步骤5:新建图层,拉渐变,复制,渐变层分别对ABCD 四个字母进行剪贴蒙版.分别调整渐变层位置,使字母与字母之间相接处颜色有区别层次感; 步骤6:把刚才复制的4个字母填充黑色,向左边移动几个像

Illustrator不透明度蒙版的使用经验技巧详解

给各位Illustrator软件的使用者们来详细的解析分享一下不透明度蒙版的使用经验技巧. 解析分享: 1.按下M键,切换到矩形工具,在页面中绘制出一个矩形,填充为红色. 2.画一个单一闭合的无填充的路径(形状)将被处理的图形框起来,然后将其与被处理图形同时选择.(在本文,我们选中绘制好的红色矩形,按下CTRL+C复制,CTRL+F原位粘贴,并将填充色设置为无,使用选择工具框选同时选中这两个矩形) 3.单击"窗口--透明度"打开透明度调板,单击调板右上角的菜单,在弹出的选项中单击&qu

详解Android 视频播放时停止后台运行的方法

详解Android 视频播放时停止后台运行的方法 在项目中,遇到了视频播放,可是后台播放的音乐也同时播放,我们要的效果肯定是视频播放的时候,音乐暂停,视频播放完了我们就继续播放音乐,于是就找到了这个方法. /**@param bMute 值为true时为关闭背景音乐.*/ @TargetApi(Build.VERSION_CODES.FROYO) public static boolean muteAudioFocus(Context context, boolean bMute) { if(c

Javascript函数绑定应用技巧详解

文章简介:函数绑定要创建一个函数,可以在特定环境中以指定参数调用另一个函数. 函数绑定要创建一个函数,可以在特定环境中以指定参数调用另一个函数.该技巧常常和回调函数与事件处理程序一起使用,以便在将函数作为变量传递的同时保留代码执行环境.请看以下例子: var handler = { message: "Event handled", handleClick: function (event) { alert(this.message); } }; var btn = document.

Linux精华 Tomcat服务器配置技巧详解分析

服务器|技巧|精华|详解 1.配置系统管理(Admin Web Application) 大多数商业化的J2EE服务器都提供一个功能强大的管理界面,且大都采用易于理解的Web应用界面.Tomcat按照自己的方式,同样提供一个成熟的管理工具,并且丝毫不逊于那些商业化的竞争对手.Tomcat的Admin Web Application最初在4.1版本时出现,当时的功能包括管理context.data source.user和group等.当然也可以管理像初始化参数,user.group.role的多

jQuery源码分析之jQuery中的循环技巧详解_jquery

jQuery的源码中有很多值得学习借鉴的技巧,本文即收集了jQuery中出现的各种遍历技巧和场景.具体分析如下: // 简单的for-in(事件) for ( type in events ) { } // 缓存length属性,避免每次都去查找length属性,稍微提升遍历速度 // 但是如果遍历HTMLCollection时,性能提升非常明显,因为每次访问HTMLCollection的属性,HTMLCollection都会内部匹配一次所有的节点 for ( var j = 0, l = ha