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 相关文章推荐
php写的简易聊天室代码
Jun 04 PHP
php Ubb代码编辑器函数代码
Jul 05 PHP
浅析Apache中RewriteCond规则参数的详细介绍
Jun 30 PHP
CodeIgniter CLI模式简介
Jun 17 PHP
浅析application/x-www-form-urlencoded和multipart/form-data的区别
Jun 22 PHP
PHP Opcache安装和配置方法介绍
May 28 PHP
php结合ACCESS的跨库查询功能
Jun 12 PHP
PHP SFTP实现上传下载功能
Jul 26 PHP
Laravel 的数据库迁移的方法
Jul 31 PHP
详解在YII2框架中使用UEditor编辑器发布文章
Nov 02 PHP
laravel5.6 框架邮件队列database驱动简单demo示例
Jan 26 PHP
TP5多入口设置实例讲解
Dec 15 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
一个PHP的String类代码
2010/04/20 PHP
PHP获取MySql新增记录ID值的3种方法
2014/06/24 PHP
Laravel 5.3 学习笔记之 安装
2016/08/28 PHP
php基于ob_start(ob_gzhandler)实现网页压缩功能的方法
2017/02/18 PHP
thinkphp框架实现路由重定义简化url访问地址的方法分析
2020/04/04 PHP
js可突破windows弹退效果代码
2008/08/09 Javascript
jQuery 插件仿百度搜索框智能提示(带Value值)
2013/01/22 Javascript
基于jQuery实现select下拉选择可输入附源码下载
2016/02/03 Javascript
分享一个插件实现水珠自动下落效果
2016/06/01 Javascript
angular和BootStrap3实现购物车功能
2017/01/25 Javascript
jQuery访问浏览器本地存储cookie、localStorage和sessionStorage的基本用法
2017/10/20 jQuery
layui 监听表格复选框选中值的方法
2018/08/15 Javascript
浅谈angularJs函数的使用方法(大小写转换,拷贝,扩充对象)
2018/10/08 Javascript
在Vue项目中引入JQuery-ui插件的讲解
2019/01/27 jQuery
在微信小程序中保存网络图片
2019/02/12 Javascript
由Python运算π的值深入Python中科学计算的实现
2015/04/17 Python
CentOS中使用virtualenv搭建python3环境
2015/06/08 Python
Python变量作用范围实例分析
2015/07/07 Python
Python 高级专用类方法的实例详解
2017/09/11 Python
利用python求解物理学中的双弹簧质能系统详解
2017/09/29 Python
Numpy array数据的增、删、改、查实例
2018/06/04 Python
解决python3捕获cx_oracle抛出的异常错误问题
2018/10/18 Python
python GUI库图形界面开发之PyQt5打印控件QPrinter详细使用方法与实例
2020/02/28 Python
巴西电子产品购物网站:Saldão da Informática
2018/01/09 全球购物
Skip Hop官网:好莱坞宝宝挚爱品牌
2018/06/17 全球购物
Maxpeedingrods美国:高性能汽车零件
2020/02/14 全球购物
Fox Racing英国官网:越野摩托车和山地自行车服装
2020/02/26 全球购物
2019年c语言经典面试题目
2016/08/17 面试题
学雷锋演讲稿汇总
2014/05/10 职场文书
四查四看整改措施
2014/09/19 职场文书
工程安全生产协议书
2014/11/21 职场文书
优秀少先队员事迹材料
2014/12/24 职场文书
团队拓展训练心得体会
2016/01/12 职场文书
使用GO语言实现Mysql数据库CURD的简单示例
2021/08/07 Golang
MYSQL 运算符总结
2021/11/11 MySQL
springboot 自定义配置 解决Boolean属性不生效
2022/03/18 Java/Android