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连接access数据库
Mar 27 PHP
PHP教程 变量定义
Oct 23 PHP
在mysql数据库原有字段后增加新内容
Nov 26 PHP
php 5.3.5安装memcache注意事项小结
Apr 12 PHP
解析二进制流接口应用实例 pack、unpack、ord 函数使用方法
Jun 18 PHP
php随机取mysql记录方法小结
Dec 27 PHP
php实现将字符串按照指定距离进行分割的方法
Mar 14 PHP
PHP连接操作access数据库实例
Mar 30 PHP
PHP将MySQL的查询结果转换为数组并用where拼接的示例
May 13 PHP
php获取客户端IP及URL的方法示例
Feb 03 PHP
Thinkphp开发--集成极光推送
Sep 15 PHP
php函数式编程简单示例
Aug 08 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
cmd下运行php脚本
2008/11/25 PHP
phpMyAdmin出现无法载入 mcrypt 扩展,请检查PHP配置的解决方法
2012/03/26 PHP
php利用单例模式实现日志处理类库
2014/02/10 PHP
Codeigniter整合Tank Auth权限类库详解
2014/06/12 PHP
php获取发送给用户的header信息的方法
2015/03/16 PHP
浅谈php7的重大新特性
2015/10/23 PHP
PHP性能分析工具xhprof的安装使用与注意事项
2017/12/19 PHP
editable.js 基于jquery的表格的编辑插件
2011/10/24 Javascript
js根据给定的日期计算当月有多少天实现思路及代码
2013/02/25 Javascript
js如何获取兄弟、父类等节点
2014/01/06 Javascript
javascript中innerText和innerHTML属性用法实例分析
2015/05/13 Javascript
javascript单例模式的简单实现方法
2015/07/25 Javascript
使用PBFunc在Powerbuilder中支付宝当面付款功能
2016/10/01 Javascript
javascript简易画板开发
2020/04/12 Javascript
BootStrap表单宽度设置方法
2017/03/10 Javascript
详解Angular5路由传值方式及其相关问题
2018/04/28 Javascript
详解小程序开发经验:多页面数据同步
2019/05/18 Javascript
vue-cli3跨域配置的简单方法
2019/09/06 Javascript
微信小程序获取复选框全选反选选中的值(实例代码)
2019/12/17 Javascript
JS+canvas五子棋人机对战实现步骤详解
2020/06/04 Javascript
[02:29]大剑、皮鞭、女装,这届DOTA2勇士令状里都有
2020/07/17 DOTA
Python数据分析之双色球中蓝红球分析统计示例
2018/02/03 Python
PyQt5每天必学之进度条效果
2018/04/19 Python
python递归函数绘制分形树的方法
2018/06/22 Python
Python 类,property属性(简化属性的操作),@property,property()用法示例
2019/10/12 Python
python实现的Iou与Giou代码
2020/01/18 Python
python画环形图的方法
2020/03/25 Python
环境科学专业个人求职信
2013/09/26 职场文书
大班上学期幼儿评语
2014/04/30 职场文书
白莲教口号
2014/06/18 职场文书
党员个人查摆剖析材料
2014/10/16 职场文书
2014年医院个人工作总结
2014/12/09 职场文书
档案工作个人总结
2015/03/03 职场文书
创业计划书之美容店
2019/09/16 职场文书
Python获取指定日期是"星期几"的6种方法
2022/03/13 Python
vue 自定义组件添加原生事件
2022/04/21 Vue.js