smarty模板的使用方法实例分析


Posted in PHP onSeptember 18, 2019

本文实例讲述了smarty模板的使用方法。分享给大家供大家参考,具体如下:

这里以smarty3为例

首先, 在官网下载smarty3模板文件,然后解压。

在解压之后的文件夹中,libs是smarty模板的核心文件,demo里面有示例程序。

我们把libs文件夹复制到我们的工作目录,然后重命名为smarty。

smarty模板的使用方法实例分析

假设我们在controller目录下的index.php中使用smarty模板。

index.php

<?php
require '../smarty/Smarty.class.php';
$smarty = new Smarty;
$smarty->debugging = false;  //开启debug模式
$smarty->caching = true;  //开启缓存
$smarty->cache_lifetime = 120; //缓存时间
$smarty->left_delimiter = '<{';  //左定界符
$smarty->right_delimiter = '}>';  //右定界符
$smarty->template_dir = __DIR__.'/../view/';  //视图目录
$smarty->compile_dir = __DIR__ . '/../smarty/compile/';  //编译目录
$smarty->config_dir = __DIR__ . '/../smarty/configs/'; //配置目录
$smarty->cache_dir = __DIR__ . '/../smarty/cache/';  //缓存目录
$list = range('A', 'D');
$smarty->assign("list", $list);
$smarty->assign("name", "zhezhao");
$smarty->display('index.html');

模板文件index.html

<html>
<head>
  <title></title>
</head>
<body>
  <p><h1><{$name}></h1></p>
  <{foreach $list as $k=>$v }>
    <p><h1><{$k}> : <{$v}></h1></p>
  <{/foreach}>
</body>
</html>

上述方法的优点是使用起来配置比较简单,缺点也是显而易见的,我们controller目录下可能有很多页面调用smarty模板,在每个页面都需要将上述方法配置一遍。

解决方法有两种:

将smarty模板的配置信息写到一个文件中,然后其他页面可以通过包含该文件使用smarty对象。

require '../smarty/Smarty.class.php';
$smarty = new Smarty;
$smarty->debugging = false;  //开启debug模式
$smarty->caching = true;  //开启缓存
$smarty->cache_lifetime = 120; //缓存时间
$smarty->left_delimiter = '<{';  //左定界符
$smarty->right_delimiter = '}>';  //右定界符
$smarty->template_dir = __DIR__.'/../view/';  //视图目录
$smarty->compile_dir = __DIR__ . '/../smarty/compile/';  //编译目录
$smarty->config_dir = __DIR__ . '/../smarty/configs/'; //配置目录
$smarty->cache_dir = __DIR__ . '/../smarty/cache/';  //缓存目录

我们自己编写一个类,继承自Smarty类,然后将配置信息写在构造函数中。

我们编写mySmarty类

<?php
require '../smarty/Smarty.class.php';
class mySmarty extends Smarty{
  public function __construct(array $options = array()){
    parent::__construct($options);
    $this->debugging = false; //开启debug模式
    $this->caching = true; //开启缓存
    $this->cache_lifetime = 120;  //缓存时间
    $this->left_delimiter = '<{'; //左定界符
    $this->right_delimiter = '}>'; //右定界符
    $this->setTemplateDir(__DIR__.'/../view/');  //视图目录
    $this->setCompileDir(__DIR__ . '/../smarty/compile/'); //编译目录
    $this->setConfigDir(__DIR__ . '/../smarty/configs/'); //配置目录
    $this->setCacheDir(__DIR__ . '/../smarty/cache/'); //缓存目录
  }
}

此时,controller里面的index.php代码可优化为:

<?php
require 'mySmarty.php';
$smarty = new mySmarty;
$list = range('A', 'D');
$smarty->assign("list", $list);
$smarty->assign("name", "zhezhao");
$smarty->display('index.html');

最后送上福利:smarty3 chm官方文档

希望本文所述对大家基于smarty模板的PHP程序设计有所帮助。

PHP 相关文章推荐
我的论坛源代码(四)
Oct 09 PHP
生成ubuntu自动切换壁纸xml文件的php代码
Jul 17 PHP
PHP中的string类型使用说明
Jul 27 PHP
php输出1000以内质数(素数)示例
Feb 16 PHP
8个PHP程序员常用的功能汇总
Dec 18 PHP
php隐藏实际地址的文件下载方法
Apr 18 PHP
php 解决substr()截取中文字符乱码问题
Jul 18 PHP
Yii针对添加行的增删改查操作示例
Oct 18 PHP
微信公众号实现会员卡领取功能
Jun 08 PHP
php-fpm添加service服务的例子
Apr 27 PHP
Laravel使用swoole实现websocket主动消息推送的方法介绍
Oct 20 PHP
解决thinkphp6(tp6)在状态码500下不报错,或者显示错误“Malformed UTF-8 characters”的问题
Apr 01 PHP
PHP MVC框架中类的自动加载机制实例分析
Sep 18 #PHP
PHP切割整数工具类似微信红包金额分配的思路详解
Sep 18 #PHP
php实现多站点共用session实现单点登录的方法详解
Sep 18 #PHP
PHP实现批量修改文件名的方法示例
Sep 18 #PHP
php DES加密算法实例分析
Sep 18 #PHP
php实现QQ小程序发送模板消息功能
Sep 18 #PHP
php文件后缀不强制为.php的实操方法
Sep 18 #PHP
You might like
Windows2003 下 MySQL 数据库每天自动备份
2006/12/21 PHP
PHP漏洞全解(详细介绍)
2012/11/13 PHP
解析php下载远程图片函数 可伪造来路
2013/06/25 PHP
php使用mb_check_encoding检查字符串在指定的编码里是否有效
2013/11/07 PHP
PHP模块memcached使用指南
2014/12/08 PHP
PHP开发注意事项总结
2015/02/04 PHP
非常经典的PHP文件上传类分享
2016/05/15 PHP
js 字符串操作函数
2009/07/25 Javascript
js压缩工具 yuicompressor 使用教程
2010/03/31 Javascript
基于jquery的点击链接插入链接内容的代码
2012/07/31 Javascript
深入浅析javascript立即执行函数
2015/10/23 Javascript
Bootstrap的Refresh Icon也spin起来
2016/07/13 Javascript
微信小程序后台解密用户数据实例详解
2017/06/28 Javascript
Angularjs 1.3 中的$parse实例代码
2017/09/14 Javascript
Javascript网页抢红包外挂实现分享
2018/01/11 Javascript
vue2.0+vuex+localStorage代办事项应用实现详解
2018/05/31 Javascript
layui使用button按钮 点击出现弹层 弹层中加载表单的实例
2019/09/04 Javascript
微信小程序下拉加载和上拉刷新两种实现方法详解
2019/09/05 Javascript
微信小程序自定义modal弹窗组件的方法详解
2020/12/20 Javascript
python获取图片颜色信息的方法
2015/03/18 Python
Python内置数据结构与操作符的练习题集锦
2016/07/01 Python
Apache如何部署django项目
2017/05/21 Python
python读文件保存到字典,修改字典并写入新文件的实例
2018/04/23 Python
python3基于TCP实现CS架构文件传输
2018/07/28 Python
Python matplotlib学习笔记之坐标轴范围
2019/06/28 Python
Python+Dlib+Opencv实现人脸采集并表情判别功能的代码
2020/07/01 Python
Draper James官网:知名演员瑞茜·威瑟斯彭所创品牌
2017/10/25 全球购物
LivingSocial爱尔兰:爱尔兰本地优惠
2018/08/10 全球购物
海南地接欢迎词
2014/01/14 职场文书
小学开学典礼主持词
2014/03/19 职场文书
汇源肾宝广告词
2014/03/20 职场文书
英文辞职信范文
2015/05/13 职场文书
初一数学教学反思
2016/02/17 职场文书
幽默口才训练经典句子(48句)
2019/08/19 职场文书
与Windows10相比Windows11有哪些改进?值不值得升级?
2021/11/21 数码科技
利用Redis实现点赞功能的示例代码
2022/06/28 Redis