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 相关文章推荐
非常不错的MySQL优化的8条经验
Mar 24 PHP
PHP mail 通过Windows的SMTP发送邮件失败的解决方案
May 27 PHP
php trim 去除空字符的定义与语法介绍
May 31 PHP
php设计模式 Proxy (代理模式)
Jun 26 PHP
pdo中使用参数化查询sql
Aug 11 PHP
将博客园(cnblogs.com)数据导入到wordpress的代码
Jan 06 PHP
php中array_multisort对多维数组排序的方法
Jun 21 PHP
ZendFramework2连接数据库操作实例
Apr 18 PHP
PHP结合Vue实现滚动底部加载效果
Dec 17 PHP
PHP多线程模拟实现秒杀抢单
Feb 07 PHP
PHP5.0~5.6 各版本兼容性cURL文件上传功能实例分析
May 11 PHP
laravel 实现设置时区的简单方法
Oct 10 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中的一个中文字符串截取函数
2007/02/14 PHP
PHP 数组基础知识小结
2010/08/20 PHP
解析关于java,php以及html的所有文件编码与乱码的处理方法汇总
2013/06/24 PHP
PHP加密3DES报错 Call to undefined function: mcrypt_module_open() 如何解决
2016/04/17 PHP
PHP使用PDO 连接与连接管理操作实例分析
2020/04/21 PHP
js监听表单value的修改同步问题,跨浏览器支持
2009/12/31 Javascript
js自动生成对象的属性示例代码
2013/10/28 Javascript
jQuery插件制作之全局函数用法实例
2015/06/01 Javascript
基于jQuery实现仿搜狐辩论投票动画代码(附源码下载)
2016/02/18 Javascript
使用HTML5+Boostrap打造简单的音乐播放器
2016/08/05 Javascript
nodejs搭建本地http服务器教程
2017/03/13 NodeJs
Vuex模块化实现待办事项的状态管理
2017/03/15 Javascript
Vue实现动态响应数据变化
2017/04/28 Javascript
Vue2.5通过json文件读取数据的方法
2018/02/27 Javascript
使用JS获取页面上的所有标签
2018/10/18 Javascript
[54:06]OG vs TNC 2018国际邀请赛小组赛BO2 第二场 8.19
2018/08/21 DOTA
python用于url解码和中文解析的小脚本(python url decoder)
2013/08/11 Python
Django admin实现图书管理系统菜鸟级教程完整实例
2017/12/12 Python
对TensorFlow的assign赋值用法详解
2018/07/30 Python
Python运行不显示DOS窗口的解决方法
2018/10/22 Python
python解压TAR文件至指定文件夹的实例
2019/06/10 Python
Python基础学习之时间转换函数用法详解
2019/06/18 Python
Python元组 tuple的概念与基本操作详解【定义、创建、访问、计数、推导式等】
2019/10/30 Python
ProBikeKit新西兰:自行车套件,跑步和铁人三项装备
2017/04/05 全球购物
请介绍一下WSDL的文档结构
2013/03/17 面试题
员工培训邀请函
2014/01/11 职场文书
文秘应聘自荐书范文
2014/02/18 职场文书
党校培训自我鉴定范文
2014/04/10 职场文书
班级团队活动方案
2014/08/14 职场文书
银行竞聘上岗演讲稿
2014/09/12 职场文书
幼儿教师自我剖析材料
2014/09/29 职场文书
合作意向协议书
2015/01/29 职场文书
主持人大赛开场白
2015/05/29 职场文书
幼儿教师师德培训心得体会
2016/01/09 职场文书
幼儿园教师培训心得体会
2016/01/21 职场文书
AJAX引擎原理以及XmlHttpRequest对象的axios、fetch区别详解
2022/04/09 Javascript