0

0

PHP模板之Smarty教程_PHP教程

php中文网

php中文网

发布时间:2016-07-20 10:57:21

|

1382人浏览过

|

来源于php中文网

原创

我们知道PHP语言作为开源社区的一员,提供了各种模板引擎,如FastTemplate,Smarty,SimpleTemplate等,而Smarty是现在使用得比较多的PHP模板引擎,今天和大家分享在PHP开发中如何安装与使用Smarty,也算是对Smarty的入门学习。

一、准备工作

1、选择安装Smarty的目录

如果拥有服务器权限,考虑到安全性可以选择将Smarty安装在WEB程序文档目录之外的地方,然后通过将Smarty安装目录地址包含在PHP.INI文件中的include_path选项。

立即学习PHP免费学习笔记(深入)”;

如果是虚拟主机权限,或者好几个项目,可以将Smarty安装在各自的项目目录中,在require Smarty类文件,也可以使用Smarty模板引擎。当然为了安全考虑,你可以通过apache禁止相关目录访问。

另外这两种Smarty安装方式在移植性方面有所区别,第一种方式需要保证每台服务器有相同的Smarty配置,第二种方式对每台服务器配置没有影响。你可以根据各自的需要选择Smarty的安装方式。

2、下载Smarty,请点击这里下载Smarty,我选择的是Smarty-2.6.25

Smarty安装步骤

1、解压下载的Smarty-2.6.25压缩包

2、拷贝libs文件夹到WEB程序目录下,我的目录为testsmarty

Linux下的安装方法可以参考这里。

在安装完Smarty模板后,我们开始简单使用Smarty。

三、Smarty使用

1、创建相关目录

由于在使用Smarty的过程中,Smarty会生成编译的模板文件以及其他配置文件、缓存文件,我们需要创建相关的目录。我在testsmarty目录下,另外创建了tpls目录,并在tpls目录下创建templates、templates_c、configs、cache目录。为什么需要创建这些目录呢?打开Smarty.class.php文件,我们可以看到Smarty类定义了部分的成员属性。

$template_dir:设定所有模板文件都需要放置的目录地址。默认情况下,目录是:“./templates”,也就是在PHP执行程序同一个目录下寻找该模板目录。

$compile_dir:设定Smarty编译过的所有模板文件的存放目录地址。默认目录是:“./templates_c”,也就是在PHP执行程序同一个目录下寻找该编译目录。如果你在Linux服务器上创建这个目录,你还需要修改此目录的权限,使它有写的权限。

$config_dir:设定用于存放模板特殊配置文件的目录,默认目录是:“./configs”,也就是在PHP执行程序同一个目录下寻找该配置目录。

$cache_dir:在启动缓存特性的情况下,这个属性所指定的目录中放置Smarty缓存的所有模板。默认目录是:”./cache”,也就是在PHP执行程序同一个目录下寻找该缓存目录。你也可以用你自定义的缓存处理函数来控制缓存文件,它将会忽略这项设置。同样如果你在Linux服务器上创建这个目录,你还需要修改此目录的权限,使它有写的权限。

为了系统安全和移植性考虑,建议不要将这些目录建立在PHP执行程序同一目录下,可以将它建立在PHP执行程序目录之外,如果已建立在PHP执行程序同一目录下,可以通过Apache做好目录限制访问工作。

凌夕卡密微商城
凌夕卡密微商城

卡密微商城支持三级分销,拥有唯一的推广链接,一次推广,三级奖励,可以查看下级会员统计信息,购买卡密之后自动显示卡密信息,无需等待,支持卡密充值、支付宝充值,可以在线提现。开发语言:JAVA开发框架:Struts2+Spring+Hibernate后台用到Freemarker模板引擎服务器环境:JDK1.7Tomcat7.0Mysql5.1演示网站用户名:admin,密码:222222安装教程:1、

下载

2、建立相关配置文件

我们需要创建一个配置文件,来覆盖Smarty类的默认成员属性,并命名为main.php,保存在smarty目录下,以后哪个脚本需要使用Smarty,我们只要把main.php包含进来即可。

<ol class="dp-c"><li class="alt"><span><span><?  </span></span></li><li><span class="keyword">include</span><span>(</span><span class="string">"./smarty/libs/Smarty.class.php"</span><span>);  </span></li><li class="alt"><span>define(</span><span class="string">'SMARTY_ROOT'</span><span>, </span><span class="string">'./smarty/tpls'</span><span>);  </span></li><li><span class="vars">$tpl</span><span> = </span><span class="keyword">new</span><span> Smarty();  </span></li><li class="alt"><span class="vars">$tpl</span><span>->template_dir = SMARTY_ROOT.</span><span class="string">"/templates/"</span><span>;  </span></li><li><span class="vars">$tpl</span><span>->compile_dir = SMARTY_ROOT.</span><span class="string">"/templates_c/"</span><span>;  </span></li><li class="alt"><span class="vars">$tpl</span><span>->config_dir = SMARTY_ROOT.</span><span class="string">"/configs/"</span><span>;  </span></li><li><span class="vars">$tpl</span><span>->cache_dir = SMARTY_ROOT.</span><span class="string">"/cache/"</span><span>;  </span></li><li class="alt"><span class="vars">$tpl</span><span>->caching=1;  </span></li><li><span class="vars">$tpl</span><span>->cache_lifetime=60*60*24;  </span></li><li class="alt"><span class="vars">$tpl</span><span>->left_delimiter = </span><span class="string">'<{'</span><span>;  </span></li><li><span class="vars">$tpl</span><span>->right_delimiter = </span><span class="string">'}>'</span><span>;  </span></li><li class="alt"><span>?> </span></li></ol>

注释:

第1-8行:主要定义一个smarty对象,同时设定模板文件、编译文件、缓存文件、配置文件的存放目录,覆盖Smarty.class.php中的默认值。

第9-10行:设定开启缓存,同时设定缓存的有效时间为1天。

知识点:$caching用来设置是否开启缓存功能。默认值设为0或无效。你也可以为同一个模板设有多个缓存,当值为1或2时启动缓存。1告诉Smarty使用当前的$cache_lifetime变量判断缓存是否过期。2告诉Smarty使用生成缓存时的cache_lifetime值。建议在项目开发过程中关闭缓存,将值设置为0

第11-12行:设置smarty语言的左右结束符,我们知道大括号是smarty的默认定界符,但在和javascript、css等结合时可能会产生冲突,所以这里我们设定为。

3、建立一个模板文件

一般情况下在美工页面设计完毕后,双方的交集点是模版文件,双方约定后,程序员不需要花太大的精力在前台,这就是使用Smarty模板引擎进行开发的好处。

我们首先建立一个简单的模版文件,名为leapsoul.tpl,你可在html文件中加入smarty变量后将文件另存为tpl类型的文件。

<ol class="dp-xml"><li class="alt"><span><span class="tag"><</span><span class="tag-name">html</span><span class="tag">></span><span> </span></span></li><li><span class="tag"><</span><span class="tag-name">head</span><span class="tag">></span><span> </span></li><li class="alt"><span class="tag"><</span><span class="tag-name">meta</span><span> </span><span class="attribute">http-equiv</span><span>=</span><span class="attribute-value">"Content-type"</span><span> </span><span class="attribute">content</span><span>=</span><span class="attribute-value">"text/html; charset=gb2312"</span><span class="tag">></span><span> </span></li><li><span class="tag"><</span><span class="tag-name">title</span><span class="tag">></span><span>   </span></li><li class="alt"><span class="tag"><</span><span>{ $title }</span><span class="tag">></span><span> </span></li><li><span class="tag"></</span><span class="tag-name">title</span><span class="tag">></span><span>   </span></li><li class="alt"><span class="tag"></</span><span class="tag-name">head</span><span class="tag">></span><span>   </span></li><li><span class="tag"><</span><span class="tag-name">body</span><span class="tag">></span><span>   </span></li><li class="alt"><span class="tag"><</span><span>{ $content }</span><span class="tag">></span><span>   </span></li><li><span class="tag"></</span><span class="tag-name">body</span><span class="tag">></span><span>   </span></li><li class="alt"><span class="tag"></</span><span class="tag-name">html</span><span class="tag">></span><span> </span></li></ol>

注释:在这个tpl文件中设定了title和content两个smarty变量,文件保存为leapsoul.tpl,同时将其保存在testsmartytplstemplates模板文件目录下。

4、建立应用程序文件

模版文件类似于一个表现层,在建立完模板文件后,我们需要一个应用程序去驱动表现层,应用程序文件定义为smarty.php。

<ol class="dp-c"><li class="alt"><span><span><?  </span></span></li><li><span class="keyword">include</span><span>(</span><span class="string">"smarty/main.php"</span><span>);  </span></li><li class="alt"><span class="vars">$tpl</span><span>->assign(</span><span class="string">"title"</span><span>, </span><span class="string">"leapsoul.cn为你展示smarty模板技术"</span><span>);  </span></li><li><span class="vars">$tpl</span><span>->assign(</span><span class="string">"content"</span><span>, </span><span class="string">"leapsoul.cn通过详细的安装使用步骤为你展示smarty模板技术"</span><span>);  </span></li><li class="alt"><span class="vars">$tpl</span><span>->display(</span><span class="string">"leapsoul.tpl"</span><span>);  </span></li><li><span>?> </span></li></ol>

注释:

在这段代码中我们主要用到smarty中的两个函数assign和display,assign你可以理解为为变量赋值,display主要是用来将网页输出。更多smarty函数今后会详细介绍。

其他说明

由于我们开启了缓存功能,有兴趣的朋友可以打开cache和templates_c,cache目录存放了这个模板的缓存文件,文件开头部分有缓存信息,如文件的生成时间和过期时间等,其他的和一般的HTML文件没有多大的区别,而templates_c存放了模板经过编译后的PHP执行文件。

至此一个简单入门的Smarty模板应用实例就算介绍完成了。

原文地址:http://www.leapsoul.cn/?p=405


www.bkjia.comtruehttp://www.bkjia.com/PHPjc/445775.htmlTechArticle我们知道 PHP 语言作为开源社区的一员,提供了各种模板引擎,如FastTemplate, Smarty ,SimpleTemplate等,而Smarty是现在使用得比较多的PHP模板引...

相关文章

PHP速学教程(入门到精通)
PHP速学教程(入门到精通)

PHP怎么学习?PHP怎么入门?PHP在哪学?PHP怎么学才快?不用担心,这里为大家提供了PHP速学教程(入门到精通),有需要的小伙伴保存下载就能学习啦!

下载

相关标签:

php

本站声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn

热门AI工具

更多
DeepSeek
DeepSeek

幻方量化公司旗下的开源大模型平台

豆包大模型
豆包大模型

字节跳动自主研发的一系列大型语言模型

通义千问
通义千问

阿里巴巴推出的全能AI助手

腾讯元宝
腾讯元宝

腾讯混元平台推出的AI助手

文心一言
文心一言

文心一言是百度开发的AI聊天机器人,通过对话可以生成各种形式的内容。

讯飞写作
讯飞写作

基于讯飞星火大模型的AI写作工具,可以快速生成新闻稿件、品宣文案、工作总结、心得体会等各种文文稿

即梦AI
即梦AI

一站式AI创作平台,免费AI图片和视频生成。

ChatGPT
ChatGPT

最最强大的AI聊天机器人程序,ChatGPT不单是聊天机器人,还能进行撰写邮件、视频脚本、文案、翻译、代码等任务。

相关专题

更多
pixiv网页版官网登录与阅读指南_pixiv官网直达入口与在线访问方法
pixiv网页版官网登录与阅读指南_pixiv官网直达入口与在线访问方法

本专题系统整理pixiv网页版官网入口及登录访问方式,涵盖官网登录页面直达路径、在线阅读入口及快速进入方法说明,帮助用户高效找到pixiv官方网站,实现便捷、安全的网页端浏览与账号登录体验。

797

2026.02.13

微博网页版主页入口与登录指南_官方网页端快速访问方法
微博网页版主页入口与登录指南_官方网页端快速访问方法

本专题系统整理微博网页版官方入口及网页端登录方式,涵盖首页直达地址、账号登录流程与常见访问问题说明,帮助用户快速找到微博官网主页,实现便捷、安全的网页端登录与内容浏览体验。

272

2026.02.13

Flutter跨平台开发与状态管理实战
Flutter跨平台开发与状态管理实战

本专题围绕Flutter框架展开,系统讲解跨平台UI构建原理与状态管理方案。内容涵盖Widget生命周期、路由管理、Provider与Bloc状态管理模式、网络请求封装及性能优化技巧。通过实战项目演示,帮助开发者构建流畅、可维护的跨平台移动应用。

144

2026.02.13

TypeScript工程化开发与Vite构建优化实践
TypeScript工程化开发与Vite构建优化实践

本专题面向前端开发者,深入讲解 TypeScript 类型系统与大型项目结构设计方法,并结合 Vite 构建工具优化前端工程化流程。内容包括模块化设计、类型声明管理、代码分割、热更新原理以及构建性能调优。通过完整项目示例,帮助开发者提升代码可维护性与开发效率。

25

2026.02.13

Redis高可用架构与分布式缓存实战
Redis高可用架构与分布式缓存实战

本专题围绕 Redis 在高并发系统中的应用展开,系统讲解主从复制、哨兵机制、Cluster 集群模式及数据分片原理。内容涵盖缓存穿透与雪崩解决方案、分布式锁实现、热点数据优化及持久化策略。通过真实业务场景演示,帮助开发者构建高可用、可扩展的分布式缓存系统。

92

2026.02.13

c语言 数据类型
c语言 数据类型

本专题整合了c语言数据类型相关内容,阅读专题下面的文章了解更多详细内容。

53

2026.02.12

雨课堂网页版登录入口与使用指南_官方在线教学平台访问方法
雨课堂网页版登录入口与使用指南_官方在线教学平台访问方法

本专题系统整理雨课堂网页版官方入口及在线登录方式,涵盖账号登录流程、官方直连入口及平台访问方法说明,帮助师生用户快速进入雨课堂在线教学平台,实现便捷、高效的课程学习与教学管理体验。

15

2026.02.12

豆包AI网页版入口与智能创作指南_官方在线写作与图片生成使用方法
豆包AI网页版入口与智能创作指南_官方在线写作与图片生成使用方法

本专题汇总豆包AI官方网页版入口及在线使用方式,涵盖智能写作工具、图片生成体验入口和官网登录方法,帮助用户快速直达豆包AI平台,高效完成文本创作与AI生图任务,实现便捷智能创作体验。

717

2026.02.12

PostgreSQL性能优化与索引调优实战
PostgreSQL性能优化与索引调优实战

本专题面向后端开发与数据库工程师,深入讲解 PostgreSQL 查询优化原理与索引机制。内容包括执行计划分析、常见索引类型对比、慢查询优化策略、事务隔离级别以及高并发场景下的性能调优技巧。通过实战案例解析,帮助开发者提升数据库响应速度与系统稳定性。

64

2026.02.12

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
PHP课程
PHP课程

共137课时 | 12.2万人学习

JavaScript ES5基础线上课程教学
JavaScript ES5基础线上课程教学

共6课时 | 11.3万人学习

PHP新手语法线上课程教学
PHP新手语法线上课程教学

共13课时 | 0.9万人学习

关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号