- 浏览: 213679 次
- 性别:
- 来自: 宇宙
文章分类
最新评论
-
naryCC:
虽然没有smarty那么方便,但是由于我们的环境太老不得不使用 ...
SmartTemplate -
victorwmh:
我们项目是Java项目,但数据源来自不同的地方,有些还是合作单 ...
和C++相对应Java的CheckSum -
cuisuqiang:
那你们到底是Java项目还是C++的项目?
和C++相对应Java的CheckSum -
david.org:
attempt to write a readonly dat ...
linux+apache+subversion版本控制 -
victorwmh:
wellee 写道兄弟,我怎么配置ZendDebugger老是 ...
Zend Debugger和Zend Optimizer配置(Windows)
基本方法
SmartTemplate::assign()
void assign ( string PLACEHOLDER, mixed CONTENT ) or void assign ( array CONTENT )
给模板占位符(PLACEHOLDER)或者列表(CONTENT)赋值. 可以使用散列数组或者标量
例子1:标量赋值
$template = new SmartTemplate('template.html');
$text = 'Sample Text';
$template->assign( 'TITLE', $text );
$template->output();
?>
模板(template.html):
输出:
例子2: 多个标量赋值
$template = new SmartTemplate('user.html');
$template->assign( 'NAME', 'John Doe' );
$template->assign( 'GROUP', 'Admin' );
$template->assign( 'AGE', '42' );
$template->output();
?>
模板(user.html):
Group: {GROUP}
Age: {AGE}
输出:
Group: Admin
Age: 42
例子3: 使用数组给多个标量赋值
$user = array(
'NAME' => 'John Doe',
'GROUP' => 'Admin',
'AGE' => '42',
);
$template = new SmartTemplate('user.html');
$template->assign( $user );
$template->output();
?>
模板(user.html):
Group: {GROUP}
Age: {AGE}
输出:
Group: Admin
Age: 42
例子4: 命名空间
$admin = array(
'NAME' => 'John Doe',
'AGE' => '42',
);
$guest = array(
'NAME' => 'Roger Rabbit',
'AGE' => '16',
);
$template = new SmartTemplate('users.html');
$template->assign( 'admin', $admin );
$template->assign( 'guest', $guest );
$template->output();
?>
模板(user.html): 占位符(PLACEHOLDER)对应数组,“.”对应数组“[]”
Admin Age: {admin.AGE}
Guest Name: {guest.NAME}
Guest Age: {guest.AGE}
输出:
Admin Age: 42
Guest Name: Roger Rabbit
Guest Age: 16
例子5: 使用数组命名空间
$users = array(
'admin' => array(
'NAME' => 'John Doe',
'AGE' => '42',
),
'guest' => array(
'NAME' => 'Roger Rabbit',
'AGE' => '16',
),
);
$template = new SmartTemplate('users.html');
$template->assign( $users );
$template->output();
?>
模板(user.html): 占位符(PLACEHOLDER)对应数组,“.”对应数组“[]”
Admin Age: {admin.AGE}
Guest Name: {guest.NAME}
Guest Age: {guest.AGE}
输出:
Admin Age: 42
Guest Name: Roger Rabbit
Guest Age: 16
例子6: 命名空间, 3个部分
$template = new SmartTemplate('template.html');
$content['world']['europe']['germany'] = 'DE';
$template->assign( 'top_level_domain', $content );
$template->output();
?>
模板(template.html): 占位符(PLACEHOLDER)对应数组,“.”对应数组“[]”
输出:
例子7: 列表赋值
$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();
?>
模板(links.html): 结构名称lnks对应数组
<h3> Sample Links </h3>
<!-- BEGIN links -->
<a href="{URL}"> {TITLE} </a>
<!-- END links -->
</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>
Example 8: 使用数组于多个命名空间
$title = 'Sample Links'; // Page Title
$target = '_blank'; // The Same Target for all links
$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( 'TITLE', $title );
$template->assign( 'TARGET', $target );
$template->assign( 'links', $links );
$template->output();
?>
注意:
TITLE 与 links..TITLE 使用不同的命名空间!
TARGET 不是 links 数组的成员. 如果使用在 BEGIN..END 块之内, 他必须被引用为 {parent.TARGET} 或者 {top.TARGET}.
其他可能的用法:
{top.TITLE}, {parent.parent.PAGE_ID}, {top.users.ADMIN}, 等等..
模板(links.html):
<h3> {TITLE} </h3>
<!-- BEGIN links -->
<a target='{parent.TARGET}' href="{URL}"> {TITLE} </a>
<!-- END links -->
</html>
输出:
<h3> Sample Links </h3>
<a target="_blank" href="http://www.php.net/"> PHP </a>
<a target="_blank" href="http://www.apache.org/"> Apache </a>
<a target="_blank" href="http://www.mysql.com/"> MySQL </a>
</html>
SmartTemplate::append() void append ( string PLACEHOLDER, mixed CONTENT )
追加内容给模板占位符. 可以使用散列数组或者标量.
例子1 (列表):
$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();
?>
模板(links.html): 列表追加为行
<h3> Sample Links </h3>
<!-- BEGIN links -->
<a href="{URL}"> {TITLE} </a>
<!-- END links -->
</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>
例子2 (标量):
$page = new SmartTemplate('template.html');
$page->append('TITLE' => 'Hello ');
$page->append('TITLE' => 'World ');
$page->append('TITLE' => '!');
$page->output();
?>
模板(template.html): 标量为内容的追加
输出:
SmartTemplate::output() void output ()
解析模板并输出结果.
例子:
$page = new SmartTemplate('template.html');
$page->assign('TITLE' => 'Sample Title');
$page->output();
?>
SmartTemplate::result() string result ()
解析模板并返回结果.
例子:
$page = new SmartTemplate('template.html');
$page->assign('TITLE' => 'Sample Title');
$output = $page->result();
echo 'Output page: ' . $output;
?>
SmartTemplate::use_cache void use_cache ( [mixed key] )
激活内建的输出缓存. 判断当前执行的脚本 (判断依据$_SERVER[REQUEST URI]) 是否在确定的时间内执行过. 如果执行过, use_cache 将返回缓存的页面给浏览器并且中止运行.
如果没有一个有效的输出句柄可以使用,use_cache将激活PHP输出缓存,并且返回数据到执行它的脚本. 下面的脚本执行时, use_cache 捕获所有输出到浏览器的内容,并保存到缓存目录. 缓存的每一个文件名称是唯一的,他根据当前执行的脚本文件名称,GET参数(REQUEST_URI)以及可选得参数来自东设定.
如果脚本有一些重要的工作,例如记录日志等,那么应该在use_cache 之前调用你的代码.
例子:
$page = SmartTemplate('template.html');
$page->cache_dir = '/tmp/'; // Where to store cache files
$page->cache_lifetime = 120; // Keep cache for 120 seconds
$page->use_cache(); // Activate ouput cache
//
// Assemble Page Content
//
$page->output();
?>
SmartTemplate::debug() void debug ()
激活内建调试器. Debug 能够代替或者内嵌在 output . 他列出了指定的变量及其内容的详细列表, 编译后的模板和模板的原来结构.
Debug 对于确定和排除模板中的错误非常有用.
流程控制
SmartPHP 例子: if
if ... endif 控制有条件的输出模板的部分.
语法如下:
变量不为空
变量值判断
变量值否定判断
(var 在 ENDIF 之后是可选的,但是最好加上)
if.php:
require_once "class.smarttemplate.php";
$page = new SmartTemplate("if.html");
$page->assign( 'username', 'HonestQiao' );
$page->assign( 'usergroup', 'ADMIN' );
$page->assign( 'picture', '' );
$page->output();
?>
if.php使用的模板文件如下:
if.html:
<!-- IF picture --> <img src="{picture}"> <!-- ENDIF picture -->
<!-- IF usergroup="ADMIN" -->
<a href="admin.php"> ADMIN Login </a><br>
<!-- ENDIF usergroup -->
if.php执行的效果如下:
输出: ( 查看)
<a href="admin.php"> ADMIN Login </a><br>
SmartPHP 例子: else
else 控制作为 if 控制的扩展,当if 判断结果为 FALSE 来输出模板的一部分.
else.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();
?>
else.php使用的模板文件如下:
else.html:
<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 -->
else.php执行的效果如下:
输出: ( 查看)
Picture not available! <br>
<a href="admin.php"> ADMIN Login </a><br>
SmartPHP 例子: elseif
elseif 控制是 else 与 if 的结合.
elseif.php: ( 下载)
require_once "class.smarttemplate.php";
$page = new SmartTemplate("elseif.html");
$page->assign( 'usergroup', 'INTERNAL' );
$page->output();
?>
elseif.php使用的模板文件如下:
elseif.html:
<a href="admin.php"> Admin Staff Login </a><br>
<!-- ELSEIF usergroup="SUPPORT" -->
<a href="support.php"> Support Staff Login </a><br>
<!-- ELSEIF usergroup -->
<a href="other.php"> Standard Login </a><br>
<!-- ELSE -->
You don't even have a usergroup!
<!-- ENDIF -->
elseif.php执行效果如下:
输出:
SmartPHP 例子: begin end
begin ... end 结构提供了一种方法,使用数字索引数组来输出重复的相似的内容。数字索引数组的每一个元素,应该是一个散列数组,<!-- begin --> and <!-- end --> 标签类似一个小的模板,他分析内嵌的模板片断,并使用这个散列数组来生成内容。
每个散列数组可以使用以下的两个扩展参数:
ROWCNT :当前元素的在父数组之中的实际位置. (0,1,2,3,...n)
ROWBIT : 表示ROWCNT的二进制字节的最后一位,也就是奇偶值. (0,1,0,1,0,1,...)
begin ... end 块可以很容易的嵌套使用,他们会被自动的递归分析.
begin_end.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();
?>
begin_end.php使用的模板如下:
begin_end.html:
.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>
begin_end.php的运行效果如下:
输出:
.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>
评论
发表评论
-
PHP webservice
2012-04-02 10:08 0http://www.blueidea.com/tech/pr ... -
常用webservice地址
2012-04-02 08:36 1273天气预报Web Service,数据来源于中国气象局 En ... -
yum httpd php php-mysql
2012-02-20 11:10 1538对于CentOS服务器yum是一个非常好的工具,尤其是在32位 ... -
用PHP写的一个web升级脚本
2011-10-21 14:31 1200管理web项目一直是件很困难的事情,程序使用时间越长里面的sp ... -
Postfix替代sendmail发送邮件
2011-08-18 10:52 3630基础知识 MUA: Mail User Ag ... -
Wordpress插件开发
2011-08-11 15:33 1269wordpress能成为当今用户最多的blog程序,其强大的插 ... -
PHP加速器APC、eAccelerator、xCache
2011-08-04 18:06 1514一、PHP加速器介绍 PHP加速器是一个为了提高PH ... -
linux+cacti安装配置,监控主机性能
2011-07-21 15:21 2287一、Cacti概述 1、cacti是用php语言 ... -
PHP正则表达式
2011-07-01 18:14 1180一、概述 正则表达式是进行模式匹配和文本操纵的一种复杂而 ... -
PHP表单及验证
2011-06-30 17:49 2283一、概述 PHP在处理一个页面时,它都会检查URL和 ... -
PHP程序员如何突破成长瓶颈
2011-06-04 15:23 985转:http://www.builder.com.cn/201 ... -
PHP Session原理分析及使用
2011-06-02 16:49 6113之前在一个叫魔 ... -
国外主流PHP框架对比
2011-05-25 10:21 1174【转自】http://tech.it168.c ... -
用memcache.php监测Memcached的使用情况
2010-12-27 10:25 1381最新的memcache pecl中,新增了一个memcache ... -
Linux下安装Memcached及php的memcache扩展库
2010-12-26 18:34 2067Memcache是什么? Memcach ... -
【转】PHP 实现多服务器共享 SESSION 数据
2010-12-14 09:33 873一、问题起源 稍大一 ... -
Zend Debugger和Zend Optimizer配置(Windows)
2010-06-15 12:26 3231Zend Debugger和Zend Optimizer的单个 ... -
PHP常见问题
2010-05-21 07:59 9400、字符串与数字比较,非数字开头的字符串与0比较时返回真 ...
相关推荐
对smarttemplate1.2.1 中的文件结构和部分程序代码稍做了一下修改,在IIS或Apache服务器上配置OK后可以直接运行浏览,不用改动任何代码,便于初学者学习研究。 此Demo已在本机测试通过 测试环境:WINDOWS2003+IIS6+...
### SmartTemplate:高效模板引擎详解 #### 一、SmartTemplate的效率优势 SmartTemplate作为一款高性能的模板引擎,其设计初衷即在于追求极致的执行效率。尽管它集成了丰富的功能模块,但在实际运行中,系统只会...
首先,让我们深入了解什么是SmartTemplate。SmartTemplate是一个基于PHP的模板系统,它的设计理念是将业务逻辑与视图层分离,让开发者可以专注于代码的结构和数据的处理,而设计师则可以自由地设计页面布局和样式。...
var smartTemplate = new SmartTemplate(); var htmlOutput = smartTemplate.render(template, data); ``` `render` 方法接收两个参数:一个是模板字符串,另一个是包含数据的对象。执行后,`htmlOutput` 变量将...
SmartTemplate V1.2.1 是一个用于快速生成和编辑模板的工具,它可能是为了提高工作效率,特别是对于那些需要频繁创建类似文档或者报告的人。在IT行业中,模板工具的应用非常广泛,例如在软件开发、数据分析报告、...
基于PHP模块引擎SmartTemplate高校图书管理系统 该高校图书管理系统基于PHP模块引擎SmartTemplate,旨在解决高校图书管理系统中的信息化问题。该系统通过建立一个智能化、系统化、信息化的图书管理系统,旨在提高...
- `smarttemplate-1.2.1`:可能包含SmartTemplate 1.2.1的主要源码和库文件。 - `smarttemplate_extensions`:存放模板引擎的扩展插件。 - `extensions`:可能与`smarttemplate_extensions`类似,提供额外的功能...
资源名字:基于php+mysql+smarttemplate的图片共享系统设计与实现(源码+文档)_php_mysql图片共享系统.zip 资源内容:项目全套源码+完整文档 源码说明: 全部项目源码都是经过测试校正后百分百成功运行。 适合场景...
【项目资源】:包含前端、后端、移动开发、操作系统、人工智能、物联网、信息化管理、数据库、硬件开发、大数据、课程资源、音视频、网站开发等各种技术项目的源码。...【项目质量】:所有源码都经过严格测试,可以直接...
QuickSkin(以前称为SmartTemplate)是一种PHP模板引擎/编译器,旨在支持大规模的基于Web的应用程序。 (HTML-)模板被转换为PHP代码并非常快速地执行。 http://sourceforge.net/projects/quickskin/
总结来说,FTP上传下载是远程文件交互的基础,BizTalk提供了强大的FTP集成能力,结合SmartTemplate工具可以简化企业级的文件传输管理。在实际应用中,我们应关注安全性,采取适当的措施来保护数据安全。同时,理解和...
Quickskin是PHP编程领域中的一款高效模板引擎,它源自Smarttemplate技术,并在后续发展中进行了升级和优化,成为了轻量级且功能强大的工具。Quickskin的主要特点是它的轻巧性、高效性和对MVC(模型-视图-控制器)...
SmartTemplate则是一种模板引擎,它将视图层和逻辑层分离,使得网站设计更加灵活,开发者可以专注于业务逻辑,而设计师则可以独立地修改网站样式。 此外,"access(mdb)”通常指的是Microsoft Access数据库,这是一...
模板引擎采用 smarttemplate 6.时间显示更详细 7.安装程序自动建立数据库 9.日志置顶功能 10.发表评论不再需要写标题 11.日志和记事增加表情功能 12.优化的 RSS13.增加RSS1.014.分类可以放在横排...
5.模板引擎采用 smarttemplate 6.时间显示更详细 7.安装程序自动建立数据库 9.日志置顶功能 10.发表评论不再需要写标题 11.日志和记事增加表情功能 12.优化的 RSS 13.增加RSS1.0 14.分类可以放在横排也可以...
- Smarty、PHPLib和SmartTemplate等模板引擎使HTML与PHP代码分离,提升代码可维护性和用户体验。 6. **MVC模式**: - MVC(Model-View-Controller)是一种设计模式,用于解耦应用程序的业务逻辑、用户界面和数据...
4. **模板引擎**:可能采用了某种模板引擎,如SmartTemplate或ASP.NET MVC,用于分离视图和逻辑,提高代码可维护性。 5. **安全性**:源码应考虑防止SQL注入、跨站脚本攻击(XSS)等网络安全问题,可能包含了输入验证...