Luhd
轻型php模板编译类压缩包下载地址:下载地址1:
Luhd 轻型php模板编译类 v1.0.2---布署步骤和模板语言的范例
提供者: Tyds qq: 382596765 email :
tyds1@qq.com tyds.luhd@gmail.com 欢迎技术交流, 欢迎索要使用手册
一。在php网站项目里部署:
1. 下载压缩包,解压后将解压后得到的文件 tyds_root_path.php复制到你网站的根目录下。
模板类文件tydsparser.php可存放在网站内任何地方。
如果你的php网站项目基于codeigniter
框架:
首先把文件tydsparser.php里这句:// CodeIgniter 框架下打开以下语句
后面注释掉的语句去掉注释。
在网站根目录下的index.php文件里加以下语句定义THEROOT常量:
$thepathinfo = pathinfo(__FILE__);
$path_parts=$thepathinfo["dirname"].'/';
if ( ! defined('THEROOT')) define('THEROOT', $path_parts);
以上语句代替了 tyds_root_path.php,所以在 CodeIgniter 框架下无须该文件。
把模板类文件tydsparser.php 放到你应用目录的libraries 子目录里.
2.php文件里使用:
在你的php文件里或她包含进来的php文件里写以下服务器包含语句:
include "相对路径/tyds_root_path.php";
include THEROOT."相对路径/tydsparser.php";
语句里tyds_root_path.php前面的相对路径要特别注意,该文件在根目录下,请正确包含。
THEROOT常量是前一步tyds_root_path.php文件里定义的,代表网站根目录的绝对路径。
这两个语句顺序不能错。后面tydsparser.php文件的相对路径是相对于网站根目录的。
和使用其它php类一样先实例化。实例化时,可选择传入一个数组型参数,该数组的元素值就是你定义的该实例里类属性的值,
没有传入或只在数组里定义部分类属性,则没定义部分将采用默认值。
这些默认值是:
模板文件存放目录(相对网站根目录)
microtpl
缓存的php文件存放目录(相对网站根目录)
cache
缓存的静态内容html文件存放目录(相对网站根目录)
cache/html
缓存的php文件过期时间
0 表示每次请求都更新
缓存的html文件过期时间
0 表示每次请求都更新
模板语言左右界定符
左右大括号 {}
1. 类属性对应的数组键名是 "template_dir" "compile_dir"
"html_dir" "exp_time" "html_time"
3. 实例化模板类:$tmpl = new Tydsparser($config); 也可全部使用默认属性值:$tmpl =
new Tydsparser();
4.
将模板文件里要显示的数据通过$tmpl->assign($vars,$value=null)函数传入模板文件
5. 调用$tmpl->display($file_name, $in_ci=false)
或$tmpl->get_html($filename,$addname="",$pagenumber=1,
$in_ci=false)显示$filename模板文件
(带值参数均为调用时可选,未提供则那些值是默认值)
6. Codeigniter 框架下象使用视图(view)一样使用。使用举例:
$config=array("template_dir"=>"app/template",
"compile_dir"=>"app/cache",
"html_dir"=>"app/cache/html");
$this->load->library('tydsparser',
$config);
$this->tydsparse->assign($vars);
$this->tydsparse->display($file_name,
true); 或
$this->tydsparse->to_html($file_name,
true);
与 $this->load->view($file_name);
相同的是都不会直接输出, 而是将输出加到 CodeIgniter 框架的 output 类实例里(
$CI->output->append_output($content);),
由其处理输出。
本页是
php文件tmp.php显示模板文件tpl_sample.html 的结果。详细代码请查看sample目录下的有关文件。
二。模板语言
1. 模板文件里的模板变量:
模板变量是模板文件里使用动态信息的基本语句,是网站php程序员从服务器代码里传给模板文件,或模板文件里网站前端设计工程师自己通过{assign
var="assignvar"
value="llvalue"}模板语句给模板文件增加的,网站前端设计工程师在模板文件里可使用的显示动态信息的占位符。
它以$开始,只能是大小写英文字母和数字和下划线组成,如果是数组, 用方括号[]表示下标,方括号[]内可以是数字,
文本,也可是另一个模板变量。所有模板语句里这种格式的内容都将作为模板变量编译({php}......{/php}除外),模板语句外单独显示模板变量,则需要用设定的模板语言界定符将它包围。举例:{$marr[2]}
显示为:nokey"v3
{$marr} $marr的值是数组, 将这样显示: array ( 0 => 'nokeyv1', 1
=> 'nokey\'v2', 2 => 'nokey"v3', 3
=> 'nokeyv4', 4 => 'nokeyv5')
2. {code} $ppp[aaa][c] = '我是模板变量'; echo
$ppp[aaa][c];{/code}
这个语句
是给模板文件增加了一个可用模板变量:$ppp[$aaa][c] 。并显示这个变量:
我是模板变量
3. {php} $mm= '我是php变量'; echo $mm;{/php}
这个语句里面的内容是标准的php代码,$mm
是标准的php变量,不会当作模板变量编译。语句里的内容将会原封不动的放进编译后的php文件里,执行php文件时显示这个变量:
我是php变量
4. {assign var='assignvar' value='llvalue'}
这个语句用于在模板文件里增加可用的模板变量,这个语句之后,可以用{$assignvar}显示这个模板变量:
llvalue
5. {cycle values = "xxx,fff,kkk"}
循环显示一个用逗号分割的字符串中逗号分割开的每部分(没有逗号的文本, 当作只有一部分), 模板文件里, 每出现一次该语句,就显示一次,
从左到右,到了末尾又到开始。在模板文件里写四次这个语句,则每个写该语句的位置将显示为 ‘xxx,fff,kkk'不同部分:
xxx--- fff--- kkk--- xxx
6. {if $cont[id] >= 'astr'}显示1{elseif
$action=='useradd_1'}显示2{else}显示3{/if}
这是个标准的条件控制显示语句。如果{if
...}语句里的条件成立, 则显示1,如果{elseif ...}语句里的条件成立, 则显示2,如果不符合上述条件,
则显示3。这里的条件设置方式和php里一样,$action=='useradd_1'表示模板变量$action的值等于'useradd_1‘。示例:
{if 6>5}显示1{elseif
6<5}显示2{else}显示3{/if} 将显示:显示1
7. {section name="secname" loop=$marr
}{sectionelse}如果循环条件不成立则显示这里的内容{/section}
这是个循环语句,loop=后一定是一个数组变量,
比如$marr。 该语句根据数组变量里的元素数量和循环开始位置(从第几个元素开始),步长设置,来循环显示. {section
...}xxx{/section}里面的xxx内容。例如:模板文件里代码:
border=1px>
{sectionname="secname" loop=$marr start=0 step=1}
{$marr[$section[secname][index]]}{sectionelse}如果循环条件不成立则显示这里的内容{/section}显示为:nokeyv1
nokey'v2
nokey"v3
nokeyv4
nokeyv5
8. {foreach name=foreachnm key=foreachkey item=itemvalue
from=$mark }{foreachelse}如果循环条件不成立则显示这里的内容{/foreach}
这也是个循环语句,from=后一定是一个数组变量,$mark一个数组。该语句根据数组变量里的元素数量来循环显示. {foreach
...}xxx{/foreach}里面的xxx内容。例如:
border=1px>
健值健值健值健值健值{foreachname=foreachnm key=foreachkey item=itemvalue from=$mark }
{$foreach[$mark][itemkey]}{$foreach[$mark][item]}{foreachelse}如果循环条件不成立则显示这里的内容{/foreach}显示为:健
值
健
值
健
值
健
值
健
值
n1
n1v
n2
n2v
n3
3
n4
n4v
n5
n5value
9. {include file = "othe_tpl.jjj"}
这个用来包含其它模板文件,比如,模板文件夹下还有另一个模板文件othe_tpl.jjj,把它包含到这个文件里来的语句是{include
file = "othe_tpl.jjj"},包含进来的显示结果是:
I'm other template in
microtpl
10. {include_php file = $mstr2}
这个用来包含非模板文件,这里file的值可以是包含相对路径的文件名,他在缓存php文件的文件夹里寻找被包含文件,
如果在这个文件夹或其子目录下找不到文件,就从网站根目录开始找 ,找不到则提示错。包含进来的显示结果是:
{php} echo "I'm other file in cache dir"
{/php}
11.以下是三个html标签生成的模板语句
{html_radios name=kjl options=$mark } 这个语句在页面里显示:
n1v
n2v
3
n4v
n5value
{html_checkboxes name=kjn options=$mark checked=$mark1 disabled
} 这个语句在页面里显示:
n1v n2v
3 n4v
n5value
{html_options name=kjm options=$mark } 这个语句在页面里显示:
n1v
n2v
3
n4v
n5value
12.{$mstr_gewei|20...}
这个语句表示在页面里显示字符值模板变量$kmstrgewei的前20个字符,若值小于20个字符, 则都显示出来,
大于20个则从第20个截断, 并加...尾巴显示:
abcdefgye也许我是一个文章标题...
13.{*我在服务端模板里, 你看不到}
这个语句为模板注释语句,
与html的注释不同处就是客户端浏览器不会有任何显示,即使客户查看源文件(这里你能看到是为了演示,特意用了html实体字符)。
三。高级应用:
Luhd
轻型php模板编译类支持用户自行扩展定义特定格式模板语句。自定义格式模板语句有以下特点:
1. 不能与已有模板语句的格式相同, 否则将优先按本类里的编译规则编译。自己的编译函数不起作用。
2.如果语句里用到传入模板类的有关动态值,必须自己写编译代码将语句里有关格式字符串编译成使用类内部变量$ftpl_var数组元素值。编译函数里用$parser->$ftpl_var[变量名]来引用$ftpl_var数组元素值。
具体步骤:
1. 在存放类文件tydsparse.php的文件夹里建立plugins子目录。
2.把含自己写的编译函数的php文件放到这个文件夹里即可。编译模板时将自动调用。
3.特定格式模板语句解析函数具体格式要求请参阅本压缩包里plugins子目录下文件。
压缩包里plugins子目录下文件plugins示例:定义的模板语句格式为:{plugins--132}
编译后显示为:Parse sentence from plugin 132