浅谈PHP的WEB开发技术(3)

2019-02-14 22:18

图3-1 Smarty模板引擎运作示意图

3.2 Smarty配置

安装Smarty非常简单。首先,到www.smarty.net下载最新的稳定版本。将Smarty加压缩到Web文档根目录的某个位置。然后创建存储Smarty模板和配置文件的4个目录。 ? templates 放置所有网站模板。

? configs 放置在特定网站中使用的所有特殊的Smarty配置文件。

? templates_c 放置Smarty编译的所有模板(对于WEB服务器必须是可写的)。 ? cache

在启用缓存特性的情况下,放置smarty缓存的所有模板(对于WEB服务器

必须是可写的)。

在默认情况下,Smarty认为这些目录与实例化Smarty类的脚本位于相同的目录。我们也可以使用Smarty的$temolate_dir、$compile_dir、$configs_dir、$cache_dir修改默认行为。如下图:

图3-2 Smarty配置文件

3.3 使用Smarty

创建index.php文件,先使用require()语句引进刚配置好的Smarty配置文件。下面是

一个简单的实例。代码清单3-2给出了一个简单的设计模板。模板中定义了两个变量:$title

- 7 -

和$content。两个变量都放在大括号中,大括号是Smarty的默认定界符。这些定界符告诉Smarty要对定界符所包围的内容完成某些操做。在这个例子中,唯一的动作就是通过应用程序逻辑(代码清单3-1)传入相应值替代变量。不过,Smarty还能够完成大量的其他任务,例如执行表现逻辑和文本格式等。

require('smarty.php'); $smarty = new Smarty; //分配两个Smarty变量

$smarty->assign('title', \配置测试\$smarty->assign('content', \配置成功\//获取并输出模板

$smarty->display('index.tpl'); ?>

代码清单3-1 模板的应用程序逻辑

{$title}

{$content}

- 8 -

代码清单3-2简单的Smarty设计模板

Smarty默认模板位于templates目录内,除非通过$template_dir修改了默认模板目

录。

输出的结果如图3-3所示

图3-2 代码清单3-2的输出

3.4 Smarty的表现逻辑 3.4.1 注释

注释包围在定界符 {* 和 *} 之间,可以包括一行或多行,如 {* 注释 *}。

3.4.2 变量修饰符

变量修饰符的语法,如 {$var(变量名)|modifier(修饰符)}。表3-1列出几个比较常用的修饰符。

修饰符 capitalize count_words date_format default

作用 首字母大写 单词计数 格式化日期 赋默认值 - 9 -

例子 {$var|capitalize} {$var|count_words} {$var|date_format:”%B %e, %Y”} {$var|default:”默认的值”}

strip_tags truncate 删除标记标签 截取指定的字符串 {$var|strip_tags} {$var|truncate:10:”…”} 表3-1 Smarty变量修饰符

3.4.3 控制结构

? if函数

与php语言中的if函数相同,下面是一个简单实例: {if $var >5}

变量var大于5

{/if} ? foreach函数

foreach 与php中同名结构做法相同。假如 $arr = array(“tom”, “jim”, “mary”),然后我们要遍历输出数组中的每个元素,就如下: {foreach $arr as $name}

$name
{/foreach} ? foreachelse函数

foreachelse的作用是当数组为空时,可以生成某个候选输出,如: {foreach $arr as $name}

$name
空的
{foreachelse} {/foreach} ? section函数

是foreach的一种改进,会循环处理并输出数据数组,但其语法的差别很大。它提供了很多附加选项,可以更好的控制循环的执行,如表3-2。

参数 name

作用 确定节的名,可以任意 - 10 -

loop start step max show 设置循环的次数,应当设置为与数组变量同名 确定开始的位置 确定在数组中移动的步常值 确定循环的最大次数 确定是否显示此节(调试时,可以设置为TRUE) 示例,假如数组$arr = array(“tom”, “jim”, “mary”), 然后我们要遍历输出数组中的每个元素

{section name=person loop=$arr}

{$arr[person]}
{/section} ? sectionelse函数

sectionelse的作用是当数组为空时,可以生成某个候选输出,如: {section name=person loop=$arr}

{$arr[person]}

空的


{sectionelse} {/section}

3.5 Smarty缓存

数据密集型应用程序一般都有很大的开销,通常是数据获取和处理操作带来的。对于

Web应用程序,这个问题是由HTTTP协议的无状态性造成的。由于HTTP协议是无状态的,对于每个页面请求都要重复地执行相同的操作,而不论数据是否已改变。这样Web服务器的运行效率就很低。对此有一种特别有效的解决方案,这也是最合理的方案之一:将动态页面转化为静态页面,只有在页面内容有改变之后才重新构建,或者定期重新构建。Smarty也提供了这样一个特性,一般称为页面缓存(page caching)。 3.5.1 Smarty的缓存配置

require(“Smarty.class.php”); $smarty = new Smarty; $smarty->caching = true; $smarty->cache_lifetime = 60;

?>

- 11 -


浅谈PHP的WEB开发技术(3).doc 将本文的Word文档下载到电脑 下载失败或者文档不完整,请联系客服人员解决!

下一篇:西吉三小六年级语文基础知识竞赛题

相关阅读
本类排行
× 注册会员免费下载(下载后可以自由复制和排版)

马上注册会员

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: