《quickskin其实很简单》由会员分享,可在线阅读,更多相关《quickskin其实很简单(5页珍藏版)》请在金锄头文库上搜索。
1、Quickskin 其实很简单,基本上看它的 example 就能看懂。我写这篇东西的目的,只是想给自己的学习留下一个小小的脚印。属性:bool $reuse_code默认值: false是否将编译好的模板储存起来以便以后使用。如果被设置成 false,那么 QuickSkin 在每次被使用的时候编译模板string $template_dir默认值: _skins/模板读取目录。需要注意的是路径结尾的”/”是必需的!string $extensions_dir默认值: quickskin_extensions/扩展类存放的路径。扩展类是可选的。如果不使用扩展类,那么没有必要修改这个设置。结尾
2、的”/”是必须的string $temp_dir默认值: _skins_tmp/编译之后的模板存放的目录。必须要保证 PHP 有写入该目录的权限。结尾的”/”是必须的string $cache_dir默认值: cache/输出的缓存文件存放闻之。必须要保证 PHP 有写入该目录的权限。结尾的”/”是必须的int $cache_lifetime默认的输入缓存有效时间,单位是秒。基本方法1.void set()用来设置 QuickSkin 一些属性,具体属性为第一部分的那些属性2.void assign()这个是 QuickSkin 中赋值的重要操作。主要用法有以下几种$tpl-assign(na
3、me,$asdf); 这个操作将$asdf 这个值赋给模板变量 name,在模板中出现name的时候,以$asdf 替换 $tpl-assign($array=array();这里$array 是一个一维数组。这里没有模板变量名。其实这是一种比较省事的赋值办法。这里的赋值结果是模板变量名位数组的 index,值就为 index 对应的 content 的内容。比如$array(“name ”=$name,”gender”=$gender) 那么上面赋值就相当于$tpl-assign(“name”,$name);$tpl-assign(“gender”,$gender); $tpl-assign
4、(“first”,$array1=array();这个地方和上一个有些类似。但是 first 并非模板变量,而是命名空间。这种情况一般出现在两个数组 index 相同的情况下,为了区分。比如页面要显示两个人的资料,都有姓名,性别等内容。那么为了区分开,给每个数组一个命名空间,比如 first 和 second。以上一例的数组为例,比如第一个人的姓名在模板中应该表示为first.name,第二个就为second.name.主要的作用就是区分。 $tpl-assign(“list”,$list=array(array();这里$list 为一个二维数组,并且第一维的 index 为数字形式,比如$
5、list1.$list2这样子,二维字段保持一致。这种赋值方法是用在下面控制中,作为循环输出的(具体见控制结构) 其实 assign 的用法不止这些,还有一些其他的,但是主要用法就这么四种,我在使用中也就用到这么四种。别的要么格式太怪,要么就是根本就不适用,所以没有写出,有兴趣可以看看 QuickSkin 官网的 ExamplePS:assign 的用法可以混用的,具体还是要看需求而定。不过我在使用中都是把所有变量定义在一个多维数组中。只需要 assign 一次就可以完成。比如$datatitle=“asdf”;$datalist=array(array(“name”=”Lorry”,”gen
6、der”=”male”),array(“name”=”duckdull”,”gender”=”female”);$tpl-assign($data);这样子一次性就完成了赋值,index 就为模板变量名。比较好用3.void addtpl()将一个子模板加到主模版中。个人觉得这个比较有用,一定程度上可以避免在模板中使用这种格式,使得所有页面问题都交给模板,模板不需要考虑逻辑问题。举个简单的例子。VIP 用户和非 VIP 用户的用户中心面板。除了侧边栏,其余的全部都相同。将侧边栏做成子模板,则可以在程序中判断加载拿一个子模板,达到 VIP 和非 VIP 侧边栏不同的效果。4.void appen
7、d()追加模板变量的内容。模板变量可以为数组也可以为字符串。举例$tpl-assign(“list”,array(“name”=”Lorry”);$tpl-append(“list”,array(“name”=”duckdull”);那么这个时候,上面两句话就相当于$tpl-assign(“list ”,array(array(“name”=”Lorry”),array(“name”=”duckdull”);即,从一维数组 append 成二维数组append 也可以对字符串的变量进行操作,比如$tpl-assign(“TITLE”,”Hello “);$tpl-append(“TITLE”,
8、”World”);$tpl-append(“TITLE”,”!”);上面就相当于$tpl-assign(“TITLE”,”HELLO World!”);5.void use_cache()设置 quickskin 使用缓存。当客户端在设置的缓存时间内进行页面请求时,直接读取缓存页面,而不是再次编译。需要设置 cache_dir 和 cache_lifetime 两个属性。6.string result()将模板生成的结果赋值给变量。7.void output()将模板生成结果输出到浏览器。8.void debug()我用了一下,没法使用,显示 class.quickskinparse.php
9、找不到。但是从 changelog 来看,应该是将 class.quickskin.php 和 class.quickskinparse.php 合并。所以个人怀疑这个所谓的项目改名就是将原先 SmartTemplate 改成了 QuickSkin,其余的都保持没变。否则实在是不能解释为何出现 class.quickskinparse.php 丢失的情况。这个就是根据 SmartTemplate 的 debug 来写的的。Debug 作用是将所有模板变量输出并且将生成的代码也输出。控制结构(这个部分是写在模板中的 )打算分为三个部分说,有些单独说觉得很怪1.IF 模块所有程序语言中都有 if
10、这个东西,条件判断的最基本的东西。QuickSkin 中也有。语法是这样子类似于 HTML 中的注释。这里需要注意的是,首先, IF,ELSE, ENDIF 全部需要大写,而且要和前后的”-“有一个空格!这个是必须,否则就被当成注释了!IF 可以对模板变量有如下两个判断 1.是否存在;2.是否等于(或者不等于某一个值) 。分别举例如下判断 id 这个模板变量是否存在,也就是是否执行过$tpl-assign(“id ”,$anything); 进行赋值过。而则是对 name 这个模板变量的值进行判断,看其是否等于 Lorry。再比如就成了判断模板变量是不是不等于 Lorry。PS:需要增加判断条
11、件。如果一开始你用的是,那么就要写成注意,id 要和后面的 ”-“有一个空格!就没有什么好说的,和 PHP、C 之类的完全保持一致。2.BEGINEND 模块另一个控制模块登场!这个模块作用可是非常强大哦!可以将一个二维数组循环输出。用上面说到的一个数组打个比方吧。$tpl-assign(“list”,array(array(“name”=”Lorry”,”gender”=”male”),array(“name”=”duckdull”,”gender”=”female”);我们首先定义了一个模板变量,值为一个二维数组然后再模板中我们怎么将他们书出来呢?name gender看看发生了什么?输出
12、结果是:Lorry male duckdull female怎么样?我们只是定义了一个二维数组,用模板把它们完全打印出来了哦!是不是代码比较简洁呢?以前还需要写 foreach,现在,不用了,代码简洁,维护起来也很方便哦!PS:BEGIN 和 END 也要和前后的”-”有一个空格,并且 END 后面要加上 BEGIN 后面一样的模板变量哦!2.INCLUDE 模块INCLUDE 模块的作用是将一个文件 INCLUDE 到当前的模板中,和 PHP 的 include 的作用基本相似。我总是觉得这个模块的功能完全可以由 addtpl()代替了。不过直接 INCLUDE 代码效率也许会比 addtpl 要高,毕竟模板编译是需要时间的。个人倾向于 addtpl。反正我觉得这就是 SmartTemplate 到 QuickSkin 的过度模块。个人认为而已,轻拍。PS:INCLUDE 也要和前后的”- ”|有一个空格!nullResult