php中Smarty模板初体验


Posted in PHP onAugust 08, 2011

下面介绍一下Smarty模板引擎的特性:

1. 速度:采用Smarty编写的程序可以获得最大速度的提高,这一点是相对于其它的模板引擎技术而言的。

2. 编译型:采用Smarty编写的程序在运行时要编译成一个非模板技术的PHP文件,这个文件采用了PHP与HTML混合的方式,在下一次访问模板时将WEB请求直接转换到这个文件中,而不再进行模板重新编译(在源程序没有改动的情况下)

3. 缓存技术:Smarty选用的一种缓存技术,它可以将用户最终看到的HTML文件缓存成一个静态的HTML页,当设定Smarty的cache属性为true时,在Smarty设定的cachetime期内将用户的WEB请求直接转换到这个静态的HTML文件中来,这相当于调用一个静态的HTML文件。

4. 插件技术:Smarty可以自定义插件。插件实际就是一些自定义的函数。

5. 模板中可以使用if/elseif/else/endif。在模板文件使用判断语句可以非常方便的对模板进行格式重排。

使用Smarty模板版本Smarty-3.0.8,解压后文件目录如下:

php中Smarty模板初体验

于是开始了我的Smarty之旅喽——

Step 1

在服务器网页文件夹中新建一个smartytest文件夹,只取libs目录中的文件,复制到smartytest文件夹下,更名为smarty

Step 2

在test中新建目录templates,并在该目录下新建四个文件夹cache、configs、templates、templates_c,建成的文件夹形式如下图

php中Smarty模板初体验

Step 3

写一个配置文件,通过它可以实现与Smarty的连接,而且把它写成单独的文件可以在写不同页面时重复写相同的代码(当然也可以把它写成类形式,便于自定义),这里我把它文件名定为config.php

<?php 
//获取当前文件夹所在的绝对路径 H:\wamp\www\smartytest\ 
define('SMARTY_PATH',substr(dirname(__FILE__),0,-9)); 
//获取templates文件夹的绝对路径 H:\wamp\www\smartytest\templates 
define('TEMPLATES_PATH',SMARTY_PATH.'templates/'); 
require SMARTY_PATH.'smarty/Smarty.class.php'; 
$smarty = new Smarty; 
//定义目录路径 
$smarty->template_dir = TEMPLATES_PATH.'templates/'; 
$smarty->complile_dir = TEMPLATES_PATH.'templates_c/'; 
$smarty->config_dir = TEMPLATES_PATH.'configs/'; 
$smarty->cache_dir = TEMPLATES_PATH.'cache/'; 
//定义左右结束符 {% 和 %} 
$smarty->left_delimiter = '{%'; 
$smarty->right_delimiter = '%}'; 
//关闭缓存 
$smarty->caching = false; 
//关闭调试 
$smarty->debugging = false; 
?>

Step 4

写一个简单的模板文件命名为index.tpl,放到templates\templates目录下

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> 
<html xmlns="http://www.w3.org/1999/xhtml"> 
<head> 
<metahttp-equiv="Content-Type" content="text/html;charset=utf-8"> 
<title>Smarty</title> 
</head> 
<body>{%$hello%}</body> 
</html>

Step 5

写一个PHP文件,命名为index.php,放在templates文件目录下

<?php 
require 'config.php'; 
$smarty->assign('hello','Hello Word'); 
$smarty->display('index.tpl'); 
?>

现在文件目录为

php中Smarty模板初体验

Step 6

测试文件:

php中Smarty模板初体验

总结:使用Smarty模板过程中也遇见了问题,比如Smarty的目录可以自己设置,自定义性较强,因此对Smarty的教程有很多版本(我在书上看到一个版本,百度百科也有另一种),结果两个都参考就不明白怎么放了,最后还是使用百度百科的那种(也就是上文所说);其次在百度百科中的代码是复制过来的,结果在使用时出现了syntax error, unexpected T_VARIABLE错误,看着代码都很对啊,就是出错,最后查找原因,原来是网页中的全角空格所致,所以在网页上复制的代码的莫名错误最好的办法就是把空格都去了重新写;注意在写PHP文件时hello没有前边的$符号,而在tpl文件中引用时就必须得加上$符号。

PHP 相关文章推荐
[原创]PHP中通过ADODB库实现调用Access数据库之修正版本
Dec 31 PHP
PHP中10个不常见却非常有用的函数
Mar 21 PHP
MySQL连接数超过限制的解决方法
Jul 17 PHP
浅析php header 跳转
Jun 17 PHP
PHP实现获取某个月份周次信息的方法
Aug 11 PHP
适用于初学者的简易PHP文件上传类
Oct 29 PHP
UPUPW 更新 64 位 Apache 系列 PHP 7.0 正式版
Dec 08 PHP
PHP使用自定义方法实现数组合并示例
Jul 07 PHP
PHP中仿制 ecshop验证码实例
Jan 06 PHP
PHP批量删除jQuery操作
Jul 23 PHP
PHP按符号截取字符串的指定部分的实现方法
Sep 10 PHP
laravel5.5添加echarts实现画图功能的方法
Oct 09 PHP
PHP 防注入函数(格式化数据)
Aug 08 #PHP
PHP中将数组转成XML格式的实现代码
Aug 08 #PHP
PHP程序开发范例学习之表单 获取文本框的值
Aug 08 #PHP
php记录日志的实现代码
Aug 08 #PHP
判断Keep-Alive模式的HTTP请求的结束的实现代码
Aug 06 #PHP
php学习笔记(三)操作符与控制结构
Aug 06 #PHP
PHP几个数学计算的内部函数学习整理
Aug 06 #PHP
You might like
超神学院:天使彦公认最美的三个视角,网友:我的天使快下凡吧!
2020/03/02 国漫
一个简单的PHP&amp;MYSQL留言板源码
2020/07/19 PHP
php使用google地图应用实例
2014/12/31 PHP
php短址转换实现方法
2015/02/25 PHP
php实现XSS安全过滤的方法
2015/07/29 PHP
Linux系统下使用XHProf和XHGui分析PHP运行性能
2015/12/08 PHP
Javascript中的Split使用方法与技巧
2007/03/09 Javascript
页面版文本框智能提示JS代码
2009/11/20 Javascript
Jquery颜色选择器ColorPicker实现代码
2012/11/14 Javascript
js中 关于undefined和null的区别介绍
2013/04/16 Javascript
js操作输入框中选择内容兼容IE及其他主流浏览器
2014/04/22 Javascript
js实现登陆遮罩效果的方法
2015/07/28 Javascript
利用原生JS自动生成文章标题树的实例
2016/08/22 Javascript
Vue组件BootPage实现简单的分页功能
2016/09/12 Javascript
Angularjs实现搜索关键字高亮显示效果
2017/01/17 Javascript
javascript 中关于array的常用方法详解
2017/05/05 Javascript
Angular 4依赖注入学习教程之InjectToken的使用(八)
2017/06/04 Javascript
bootstrap timepicker在angular中取值并转化为时间戳
2017/06/13 Javascript
AngularJS 限定$scope的范围实例详解
2017/06/23 Javascript
JavaScript实现图片切换效果
2017/08/12 Javascript
Vue Components 数字键盘的实现
2019/09/18 Javascript
JavaScript中的this原理及6种常见使用场景详解
2020/02/14 Javascript
js实现右键弹出自定义菜单
2020/09/08 Javascript
[01:36:17]DOTA2-DPC中国联赛 正赛 Ehome vs iG BO3 第一场 1月31日
2021/03/11 DOTA
python模拟登陆Tom邮箱示例分享
2014/01/13 Python
Python实现简单的获取图片爬虫功能示例
2017/07/12 Python
python 实现矩阵上下/左右翻转,转置的示例
2019/01/23 Python
python实现在内存中读写str和二进制数据代码
2020/04/24 Python
介绍一下linux的文件权限
2012/02/15 面试题
法律专业应届本科毕业生求职信
2013/10/25 职场文书
初三学习决心书
2014/03/11 职场文书
幼儿园植树节活动总结
2014/07/04 职场文书
企业员工爱岗敬业演讲稿
2014/08/26 职场文书
2015年农村党员公开承诺事项
2015/04/28 职场文书
React 高阶组件HOC用法归纳
2021/06/13 Javascript
redis数据结构之压缩列表
2022/03/21 Redis