`
omygege
  • 浏览: 1363932 次
文章分类
社区版块
存档分类
最新评论

QuickSkin简明教程

 
阅读更多

Quickskin其实很简单,基本上看它的example就能看懂。我写这篇东西的目的,只是想给自己的学习留下一个小小的脚印。

属性:

bool $reuse_code

默认值: false

是否将编译好的模板储存起来以便以后使用。如果被设置成false,那么QuickSkin在每次被使用的时候编译模板

string $template_dir

默认值: _skins/

模板读取目录。需要注意的是路径结尾的”/”是必需的!

string $extensions_dir

默认值: quickskin_extensions/

扩展类存放的路径。扩展类是可选的。如果不使用扩展类,那么没有必要修改这个设置。结尾的”/”是必须的

string $temp_dir

默认值: _skins_tmp/

编译之后的模板存放的目录。必须要保证PHP有写入该目录的权限。结尾的”/”是必须的

string $cache_dir

默认值: cache/

输出的缓存文件存放闻之。必须要保证PHP有写入该目录的权限。结尾的”/”是必须的

int $cache_lifetime

默认的输入缓存有效时间,单位是秒。

基本方法

1.void set()

用来设置QuickSkin一些属性,具体属性为第一部分的那些属性

2.void assign()

这个是QuickSkin中赋值的重要操作。主要用法有以下几种

  • $tpl->assign(’name’,$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(“first”,$array1=array());这个地方和上一个有些类似。但是first并非模板变量,而是命名空间。这种情况一般出现在两个数组index相同的情况下,为了区分。比如页面要显示两个人的资料,都有姓名,性别等内容。那么为了区分开,给每个数组一个命名空间,比如first和second。以上一例的数组为例,比如第一个人的姓名在模板中应该表示为{first.name},第二个就为{second.name}.主要的作用就是区分。
  • $tpl->assign(“list”,$list=array(array()));这里$list为一个二维数组,并且第一维的index为数字形式,比如$list[1].$list[2]这样子,二维字段保持一致。这种赋值方法是用在下面控制中,作为循环输出的(具体见控制结构

其实assign的用法不止这些,还有一些其他的,但是主要用法就这么四种,我在使用中也就用到这么四种。别的要么格式太怪,要么就是根本就不适用,所以没有写出,有兴趣可以看看QuickSkin官网的Example

PS:assign的用法可以混用的,具体还是要看需求而定。不过我在使用中都是把所有变量定义在一个多维数组中。只需要assign一次就可以完成。比如
$data['title']=“asdf”;
$data['list']=array(array(“name”=>”Lorry”,”gender”=>”male”),array(“name”=>”duckdull”,”gender”=>”female”);
$tpl->assign($data);

这样子一次性就完成了赋值,index就为模板变量名。比较好用

3.void addtpl()

将一个子模板加到主模版中。

个人觉得这个比较有用,一定程度上可以避免在模板中使用<!-- INCLUDE file -->这种格式,使得所有页面问题都交给模板,模板不需要考虑逻辑问题。

举个简单的例子。VIP用户和非VIP用户的用户中心面板。除了侧边栏,其余的全部都相同。将侧边栏做成子模板,则可以在程序中判断加载拿一个子模板,达到VIP和非VIP侧边栏不同的效果。

4.void append()

追加模板变量的内容。模板变量可以为数组也可以为字符串。

举例$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”,”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找不到。但是从changelog来看,应该是将class.quickskin.php和class.quickskinparse.php合并。所以个人怀疑这个所谓的项目改名就是将原先SmartTemplate改成了QuickSkin,其余的都保持没变。否则实在是不能解释为何出现class.quickskinparse.php丢失的情况。这个就是根据SmartTemplate的debug来写的的。Debug作用是将所有模板变量输出并且将生成的代码也输出。

控制结构(这个部分是写在模板中的)

打算分为三个部分说,有些单独说觉得很怪

1.IF模块

所有程序语言中都有if这个东西,条件判断的最基本的东西。QuickSkin中也有。语法是这样子
<!-- IF -->
<!-- ELSE -->
<!-- ENDIF -->

类似于HTML中的注释。这里需要注意的是,首先,IF,ELSE, ENDIF全部需要大写,而且要和前后的”-“有一个空格!这个是必须,否则就被当成注释了!

IF可以对模板变量有如下两个判断1.是否存在;2.是否等于(或者不等于某一个值)。分别举例如下<!-- IF id -->判断id这个模板变量是否存在,也就是是否执行过$tpl->assign(“id”,$anything); 进行赋值过。而<!-- IF name=="Lorry" -->则是对name这个模板变量的值进行判断,看其是否等于Lorry。再比如<!-- IF name!="Lorry" -->就成了判断模板变量是不是不等于Lorry。PS:<!-- ENDIF -->需要增加判断条件。如果一开始你用的是<!-- IF id -->,那么就要写成<!-- ENDIF id -->注意,id要和后面的”-“有一个空格!!<!-- ELSE -->就没有什么好说的,和PHP、C之类的完全保持一致。

2.BEGIN…END模块

另一个控制模块登场!这个模块作用可是非常强大哦!!可以将一个二维数组循环输出。用上面说到的一个数组打个比方吧。

$tpl->assign(“list”,array(array(“name”=>”Lorry”,”gender”=>”male”),array(“name”=>”duckdull”,”gender”=>”female”)));

我们首先定义了一个模板变量,值为一个二维数组

然后再模板中我们怎么将他们书出来呢?
<!-- BEGIN list -->

{name} {gender}

<!-- END list -->

看看发生了什么?输出结果是:

Lorry male duckdull female

怎么样?我们只是定义了一个二维数组,用模板把它们完全打印出来了哦!是不是代码比较简洁呢?以前还需要写foreach,现在,不用了,代码简洁,维护起来也很方便哦!!

PS:BEGIN和END也要和前后的”-”有一个空格,并且END后面要加上BEGIN后面一样的模板变量哦!!

2.INCLUDE模块

INCLUDE模块的作用是将一个文件INCLUDE到当前的模板中,和PHP的include的作用基本相似。我总是觉得这个模块的功能完全可以由addtpl()代替了。不过直接INCLUDE代码效率也许会比addtpl要高,毕竟模板编译是需要时间的。个人倾向于addtpl。反正我觉得这就是SmartTemplate到QuickSkin的过度模块。个人认为而已,轻拍。

PS:INCLUDE也要和前后的”-”|有一个空格!

<!-- BEGIN agent_list -->

<!-- END agent_list -->

<!-- INCLUDE top.html -->

<!-- IF nullResult --><div style="width:100%; text-align:left; font-size:12px;">{nullResult}</div><!-- ENDIF nullResult -->

分享到:
评论

相关推荐

    Quickskin

    PHP的Smarttemplate模板技术的最新版更名为Quickskin,是一个轻量级.轻巧,强大,高效的模板引擎,能很好地实现PHP的MVC开发模式

    QuickSkin-开源

    QuickSkin从原始名称(SmartTemplate)重命名。 QuickSkin是一个PHP模板引擎/编译器,旨在支持大规模的基于Web的应用程序。 HTML模板被编译为本地PHP代码,并且执行速度非常快。 占地面积小。 PHP4 / 5。

    SmartTemplate-开源

    QuickSkin(以前称为SmartTemplate)是一种PHP模板引擎/编译器,旨在支持大规模的基于Web的应用程序。 (HTML-)模板被转换为PHP代码并非常快速地执行。 http://sourceforge.net/projects/quickskin/

    基于Selenium的Java爬虫实战(内含谷歌浏览器Chrom和Chromedriver版本116.0.5808.0)

    资源包括: 1.Java爬虫实战代码 2.selenium学习笔记 3.代码演示视频 4.谷歌浏览器chrom116.0.5808.0 chrome-linux64.zip chrome-mac-arm64.zip chrome-mac-x64.zip chrome-win32.zip chrome-win64.zip 5.谷歌浏览器驱动器Chromedriver116.0.5808.0 chromedriver-linux64.zip chromedriver-mac-arm64.zip chromedriver-mac-x64.zip chromedriver-win32.zip chromedriver-win64.zip 特别说明:Chrome 为测试版(不会自动更新) 仅适用于自动测试。若要进行常规浏览,请使用可自动更新的标准版 Chrome。)

    2024消费趋势报告.pdf

    2024消费趋势报告.pdf

    PCB的电磁兼容设计+电子设计领域

    1、EMC由EMI和EMS组成 2、EMS常见的整改措施 3、干扰=共模干扰+差模干扰 4、元器件的摆放 5、缝隙影响

    给排水施工图全套.xdw.pdf

    给排水施工图全套.xdw

    基于微信小程序的旅游出行必备(后端接口ssm框架实现)-毕设项目

    毕业设计基于微信小程序的旅游出行必备(后端接口ssm框架实现)-毕设项目.zip 个人经导师指导并认可通过的高分设计项目,评审分98分。主要针对计算机相关专业的正在做毕设的学生和需要项目实战练习的学习者,也可作为课程设计、期末大作业。 项目介绍: 旅游出行必备项目, 前端为微信小程序,后端接口为ssm框架实现,项目包含源码、数据库毕业设计基于微信小程序的旅游出行必备(后端接口ssm框架实现)-毕设项目.zip 个人经导师指导并认可通过的高分设计项目,评审分98分。主要针对计算机相关专业的正在做毕设的学生和需要项目实战练习的学习者,也可作为课程设计、期末大作业。 项目主要功能: 该项目是一个基于微信小程序的旅游出行应用,结合后端SSM(Spring MVC + Spring + MyBatis)框架提供服务。主要功能包括行程规划、景点信息查询、在线预订等,旨在为用户提供便捷的旅游出行体验。特点在于利用微信小程序的便捷性,实现即用即走,同时通过后端强大的数据处理能力保证服务稳定性。技术栈涵盖微信小程序开发、Java SSM框架、数据库管理等,适合学习和作为毕业设计参考。

    MC/00000000000000000000000000

    Want to play MC but do not want to buy can download to have a look。 It's very interested ------------------------------------------------------------------------------------------------- ooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooo

    2024嵌入式面试资料SPI子系统

    2024嵌入式面试资料SPI子系统提取方式是百度网盘分享地址

    电子迎宾器和声光控照明开关multsim仿真和课设报告

    设计报告 ——题目名称:电子迎宾器 ——题目名称: 声光控照明开关

    基于Selenium的Java爬虫实战(内含谷歌浏览器Chrom和Chromedriver版本115.0.5789.0)

    资源包括: 1.Java爬虫实战代码 2.selenium学习笔记 3.代码演示视频 4.谷歌浏览器chrom115.0.5789.0 chrome-linux64.zip chrome-mac-arm64.zip chrome-mac-x64.zip chrome-win32.zip chrome-win64.zip 5.谷歌浏览器驱动器Chromedriver115.0.5789.0 chromedriver-linux64.zip chromedriver-mac-arm64.zip chromedriver-mac-x64.zip chromedriver-win32.zip chromedriver-win64.zip 特别说明:Chrome 为测试版(不会自动更新) 仅适用于自动测试。若要进行常规浏览,请使用可自动更新的标准版 Chrome。)

    基于Selenium的Java爬虫实战(内含谷歌浏览器Chrom和Chromedriver版本115.0.5785.0)

    资源包括: 1.Java爬虫实战代码 2.selenium学习笔记 3.代码演示视频 4.谷歌浏览器chrom115.0.5785.0 chrome-linux64.zip chrome-mac-arm64.zip chrome-mac-x64.zip chrome-win32.zip chrome-win64.zip 5.谷歌浏览器驱动器Chromedriver115.0.5785.0 chromedriver-linux64.zip chromedriver-mac-arm64.zip chromedriver-mac-x64.zip chromedriver-win32.zip chromedriver-win64.zip 特别说明:Chrome 为测试版(不会自动更新) 仅适用于自动测试。若要进行常规浏览,请使用可自动更新的标准版 Chrome。)

    navicat下载、安装、配置.zip

    【navicat】下载、安装、配置

    2024嵌入式大厂面经东华软件2015年应届实习生毕业生招聘职位-公司

    2024嵌入式大厂面经东华软件2015年应届实习生毕业生招聘职位-公司提取方式是百度网盘分享地址

    C++ 高性能爬虫代码,带UI

    C++ 高性能爬虫代码,带UI

    2024年铁基非晶合金行业分析报告.pptx

    行业报告

    2024嵌入式大厂面经朝歌宽带笔试题

    2024嵌入式大厂面经朝歌宽带笔试题提取方式是百度网盘分享地址

    AutoRuns 查看设置开机自动加载程序、病毒木马及恶意插件程序等

    Autoruns for Windows 是 Mark Russinovich 和 Bryce Cogswell 开发的一款软件,它能用于显示在 Windows启动或登录时自动运行的程序,并且允许用户有选择地禁用或删除它们,例如那些在“启动”文件夹和注册表相关键中的程序。此外,Autoruns还可以修改包括:Windows 资源管理器的 Shell 扩展(如右键弹出菜单)、IE浏览器插件(如工具栏扩展)、系统服务和设备驱动程序、计划任务等多种不同的自启动程序。 Autoruns作为Sysinternals Suite(故障诊断工具套装)的一部分,可运行于 Windows XP、Windows Server 2003 和更高版本的 Windows 操作系统。该软件还包括一个相同功能的命令行版本Autorunsc,可以把结果报表以 CSV 格式输出。

    2024年市场展望与薪酬报告发布-randstad.pdf

    2024年市场展望与薪酬报告发布-randstad.pdf

Global site tag (gtag.js) - Google Analytics