分享
 
 
 

SmartTemplate学习笔记

王朝other·作者佚名  2006-01-09
窄屏简体版  字體: |||超大  

目录

1、SmartTemplate的效率

2、基本变量

3、逻辑运算结构

4、模式(Methods)

5、扩展类(Extensions) 未完成

------------------------------------------------------------------------

1、SmartTemplate的效率

虽然他有很多的程序来形成强大的功能,但在执行时只有你调用的才被导入,所以不用担心这方面的速度影响,同样这套模版系统是为最快的执行效率而优化过的,比起目前市场上常见的Smarty,要快不少(Smarty采用后期缓存,所以比较可能不是很准确)。

2、SmartTemplate的变量

Array的变量是由SmartTemplate内建函数assign()来赋值的

具体语法如下

assign ( 模版中的变量, 要替换的内容 )

assign ( Array内容 )

正如其他程序的变量一样,smartTemplate的变量是由特殊的{}所包含的。里面的内容可以是String,Array,Int,或者是Long Text等等(基本上php支持的)

在储存Array数据时,smartTemplate运用了我们常见的父子级分割符".",所以一个特殊的Array数据由Array Handle和具体位置的索引组成(Numerical Index or Associative Index)。

下面是一个例子

在php环境下运行以下程序

代码:

<?php

$template = new SmartTemplate('template.html');

$text = 'Sample Text';

$template->assign( 'TITLE', $text );

$template->output();

?>

模版

代码:

<html> {TITLE} </html>

输出

代码:

<html> Sample Text </html>

在只有一个Array的情况下,可以直接省略前面的array handle,就象在使用javascript时,document.window.close()可以省略为window.close()

php

代码:

<?php

$user = array(

'NAME' => 'John Doe',

'GROUP' => 'Admin',

'AGE' => '42',

);

$template = new SmartTemplate('user.html');

$template->assign( $user );

$template->output();

?>

模版

代码:

Name: {NAME}

Group: {GROUP}

Age: {AGE}

输出

代码:

Name: John Doe

Group: Admin

Age: 42

下面是另外一个例子。使用了SmartTemplate的循环函数<!-- begin Array名 -->XXXXXX<!-- end Array名>

他的功能类似foreach(),只要有东西,就一直循环显示

代码:

<?php

$links = array(

array(

'TITLE' => 'PHP',

'URL' => 'http://www.php.net/',

),

array(

'TITLE' => 'Apache',

'URL' => 'http://www.php.net/',

),

array(

'TITLE' => 'MySQL',

'URL' => 'http://www.mysql.com/',

),

);

$template = new SmartTemplate('links.html');

$template->assign( 'links', $links );

$template->output();

?>

HTML模版

代码:

<html>

<h3> Sample Links </h3>

<!-- BEGIN links -->

<a href="{URL}"> {TITLE} </a>

<!-- END links -->

</html>

代码:

<html>

<h3> Sample Links </h3>

<a href="http://www.php.net/"> PHP </a>

<a href="http://www.apache.org/"> Apache </a>

<a href="http://www.mysql.com/"> MySQL </a>

</html>

3、SmartTemplate的逻辑控制结构

★If和end If

语法:

<!-- IF 变量 --> 变量已被赋值! <!-- ENDIF 变量 -->

如果IF后面直接跟变量,变量为Null时会返回0,否则返回1

<!-- IF name=="John Doe" --> Your name is John Doe! <!-- ENDIF name -->

==判断是否相等,如果相等返回1,不相等返回0

<!-- IF name!="John Doe" --> Your name is not John Doe! <!-- ENDIF name -->

!=判断是否不等,如果成立返回1,相等则返回0

例子:

PHP

代码:

<?php

require_once "class.smarttemplate.php";

$page = new SmartTemplate("if.html");

$page->assign( 'username', 'John Doe' );

$page->assign( 'usergroup', 'ADMIN' );

$page->assign( 'picture', '' );

$page->output();

?>

HTML

代码:

<!-- IF username --> <H3> Welcome, {username} </H3> <!-- ENDIF -->

<!-- IF picture --> <img src="{picture}"> <!-- ENDIF picture -->

<!-- IF usergroup="ADMIN" -->

<a href="admin.php"> ADMIN Login </a><br>

<!-- ENDIF usergroup -->

输出代码:

<H3> Welcome, John Doe </H3>

<a href="admin.php"> ADMIN Login </a><br>

★IF的子局 else

如果else子句出现在一个逻辑循环中,当if的条件不成立时则会被运行。

例子

代码:

<?php

require_once "class.smarttemplate.php";

$page = new SmartTemplate("else.html");

$page->assign( 'username', 'John Doe' );

$page->assign( 'usergroup', 'ADMIN' );

$page->assign( 'picture', '' );

$page->output();

?>

模版

代码:

<!-- IF username -->

<H3> Welcome, {username} </H3>

<!-- ENDIF -->

<!-- IF picture -->

<img src="{picture}">

<!-- ELSE -->

Picture not available! <br>

<!-- ENDIF picture -->

<!-- IF usergroup="ADMIN" -->

<a href="admin.php"> ADMIN Login </a><br>

<!-- ELSE -->

You are in guest mode!

<!-- ENDIF usergroup -->

输出

代码:

<H3> Welcome, John Doe </H3>

Picture not available! <br>

<a href="admin.php"> ADMIN Login </a><br>

★elseif

elseif是else和if组合起来的一种结构,其意义为"除此之外如果..."

以下是一个例子

代码:

<?php

require_once "class.smarttemplate.php";

$page = new SmartTemplate("elseif.html");

$page->assign( 'usergroup', 'INTERNAL' );

$page->output();

?>

模版文件

代码:

<!-- IF usergroup="ADMIN" -->

<a href="admin.php"> 管理员登陆 </a><br>

<!-- ELSEIF usergroup="SUPPORT" -->

<a href="support.php"> 帮助人员登陆</a><br>

<!-- ELSEIF usergroup -->

<a href="other.php"> 普通方式登陆 </a><br>

<!-- ELSE -->

You don't even have a usergroup!

<!-- ENDIF -->

运行php得到的输出

代码:

<a href="other.php"> 普通方式登陆 </a><br>

★Begin...End

这个语句用于读取一个整数索引矩阵(Numerical Array,以数字为索引的数组)的值.而每个整数矩阵的子矩阵则成为以字符串为索引的矩阵(Associative Array)然后在<!-- begin --> 和 <!-- end -->之间的语句将会被读取并且重复执行.

附加:,每个associative array(字符串为索引的矩阵)会有两个附加的值

ROWCNT : 此元素在父矩阵中的具体位置 (0,1,2,3,...n) (就是目前在第几个矩阵)

ROWBIT : 矩阵序号的最后一位. (0,1,0,1,0,1,...)

下面是一个例子

PHP代码:

代码:

<?php

require_once "class.smarttemplate.php";

$page = new SmartTemplate("begin_end.html");

$users = array(

array( 'NAME' => 'John Doe', 'GROUP' => 'ADMIN' ),

array( 'NAME' => 'Jack Doe', 'GROUP' => 'SUPPORT' ),

array( 'NAME' => 'James Doe', 'GROUP' => 'GUEST' ),

array( 'NAME' => 'Jane Doe', 'GROUP' => 'GUEST' ),

);

$page->assign( 'users', $users );

$page->output();

?>

HTML模版

代码:

<style type="text/css">

.col0 { background-color: #D0D0D0; }

.col1 { background-color: #F0F0F0; }

</style>

<table border="1" cellpadding="2" cellspacing="0">

<tr>

<th> No </th>

<th> Username </th>

<th> Usergroup </th>

</tr>

<!-- BEGIN users -->

<tr class="col{ROWBIT}">

<td> {ROWCNT} </td>

<td> {NAME} </td>

<td> {GROUP} </td>

</tr>

<!-- END users -->

</table>

最后的输出

代码:

<style type="text/css">

.col0 { background-color: #D0D0D0; }

.col1 { background-color: #F0F0F0; }

</style>

<table border="1" cellpadding="2" cellspacing="0">

<tr>

<th> No </th>

<th> Username </th>

<th> Usergroup </th>

</tr>

<tr class="col0">

<td> 0 </td>

<td> John Doe </td>

<td> ADMIN </td>

</tr>

<tr class="col1">

<td> 1 </td>

<td> Jack Doe </td>

<td> SUPPORT </td>

</tr>

<tr class="col0">

<td> 2 </td>

<td> James Doe </td>

<td> GUEST </td>

</tr>

<tr class="col1">

<td> 3 </td>

<td> Jane Doe </td>

<td> GUEST </td>

</tr>

</table>

☆smartTemplate的方法

注:以下列出的方法并不会在模版设计中出前,他们属于smartTemplate的代码编辑部分,但是如果为了实现更深一步的模版设计,下面的内容是肯定有用的.

★基础方法:assign (中文意思:赋值)

语法:

assign ( 变量名, 混合内容 )

或者

assign ( 矩阵变量 )

更多介绍在变量介绍部分

★Append(附加)

语法:append ( 变量名, 内容 )

对所提供的变量附加提供的内容

例子:

代码:

<?php

$page = new SmartTemplate('links.html');

$page->append('links' => array(

'TITLE' => 'PHP',

'URL' => 'http://www.php.net/'

));

$page->append('links' => array(

'TITLE' => 'Apache',

'URL' => 'http://www.apache.org/'

));

$page->append('links' => array(

'TITLE' => 'MySQL',

'URL' => 'http://www.mysql.com/'

));

$page->output();

?>

模版

代码:

<html>

<h3> Sample Links </h3>

<!-- BEGIN links -->

<a href="{URL}"> {TITLE} </a>

<!-- END links -->

</html>

最终输出

代码:

<html>

<h3> Sample Links </h3>

<a href="http://www.php.net/"> PHP </a>

<a href="http://www.apache.org/"> Apache </a>

<a href="http://www.mysql.com/"> MySQL </a>

</html>

另外一个附加字符串的例子:

代码:

<?php

$page = new SmartTemplate('template.html');

$page->append('TITLE' => 'Hello ');

$page->append('TITLE' => 'World ');

$page->append('TITLE' => '!');

$page->output();

?>

输出将会得到

代码:

<html> Hello World ! </html>

 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
2023年上半年GDP全球前十五强
 百态   2023-10-24
美众议院议长启动对拜登的弹劾调查
 百态   2023-09-13
上海、济南、武汉等多地出现不明坠落物
 探索   2023-09-06
印度或要将国名改为“巴拉特”
 百态   2023-09-06
男子为女友送行,买票不登机被捕
 百态   2023-08-20
手机地震预警功能怎么开?
 干货   2023-08-06
女子4年卖2套房花700多万做美容:不但没变美脸,面部还出现变形
 百态   2023-08-04
住户一楼被水淹 还冲来8头猪
 百态   2023-07-31
女子体内爬出大量瓜子状活虫
 百态   2023-07-25
地球连续35年收到神秘规律性信号,网友:不要回答!
 探索   2023-07-21
全球镓价格本周大涨27%
 探索   2023-07-09
钱都流向了那些不缺钱的人,苦都留给了能吃苦的人
 探索   2023-07-02
倩女手游刀客魅者强控制(强混乱强眩晕强睡眠)和对应控制抗性的关系
 百态   2020-08-20
美国5月9日最新疫情:美国确诊人数突破131万
 百态   2020-05-09
荷兰政府宣布将集体辞职
 干货   2020-04-30
倩女幽魂手游师徒任务情义春秋猜成语答案逍遥观:鹏程万里
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案神机营:射石饮羽
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案昆仑山:拔刀相助
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案天工阁:鬼斧神工
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案丝路古道:单枪匹马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:与虎谋皮
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:李代桃僵
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:指鹿为马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:小鸟依人
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:千金买邻
 干货   2019-11-12
 
推荐阅读
 
 
 
>>返回首頁<<
 
靜靜地坐在廢墟上,四周的荒凉一望無際,忽然覺得,淒涼也很美
© 2005- 王朝網路 版權所有