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 导出数据到淘宝助手CSV的方法分享
Feb 27 PHP
用C/C++扩展你的PHP 为你的php增加功能
Sep 06 PHP
深入PHP许愿墙模块功能分析
Jun 25 PHP
php实现执行某一操作时弹出确认、取消对话框
Dec 30 PHP
destoon公司主页模板风格的添加方法
Jun 20 PHP
php运行提示:Fatal error Allowed memory size内存不足的解决方法
Dec 17 PHP
WordPress主题中添加文章列表页页码导航的PHP代码实例
Dec 22 PHP
10个对初学者非常有用的PHP技巧
Apr 06 PHP
PHP+Mysql+Ajax实现淘宝客服或阿里旺旺聊天功能(前台页面)
Jun 16 PHP
WHOOPS PHP调试库的使用
Sep 29 PHP
Laravel中为什么不使用blpop取队列详析
Aug 01 PHP
PHP simplexml_load_file()函数讲解
Feb 03 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+DBM的同学录程序(2)
2006/10/09 PHP
php设计模式  Command(命令模式)
2011/06/17 PHP
使用Curl进行抓取远程内容时url中文编码问题示例探讨
2013/10/29 PHP
php生成唯一的订单函数分享
2015/02/02 PHP
js渐变显示渐变消失示例代码
2013/08/01 Javascript
Javascript浅谈之this
2013/12/17 Javascript
javascript模拟评分控件实现方法
2015/05/13 Javascript
js实现不重复导入的方法
2016/03/02 Javascript
jQuery实现带水平滑杆的焦点图动画插件
2016/03/08 Javascript
原生JS取代一些JQuery方法的简单实现
2016/09/20 Javascript
JS如何生成一个不重复的ID的函数
2016/12/25 Javascript
Bootstrap下拉菜单更改为悬停(hover)触发的方法
2017/05/24 Javascript
IntersectionObserver实现图片懒加载的示例
2017/09/29 Javascript
Bootstrap图片轮播效果详解
2017/10/17 Javascript
Vue.js的动态组件模板的实现
2018/11/26 Javascript
vue实现日历备忘录功能
2020/09/24 Javascript
js+h5 canvas实现图片验证码
2020/10/11 Javascript
Python Web开发模板引擎优缺点总结
2014/05/06 Python
python 字典(dict)遍历的四种方法性能测试报告
2014/06/25 Python
Python常用模块用法分析
2014/09/08 Python
python命令行参数解析OptionParser类用法实例
2014/10/09 Python
提升Python程序运行效率的6个方法
2015/03/31 Python
Python遍历指定文件及文件夹的方法
2015/05/09 Python
Python中Continue语句的用法的举例详解
2015/05/14 Python
python django下载大的csv文件实现方法分析
2019/07/19 Python
Python中print函数简单使用总结
2019/08/05 Python
阿迪达斯意大利在线商店:adidas意大利
2016/09/19 全球购物
如何写一份好的自荐信
2014/01/02 职场文书
《颐和园》教学反思
2014/02/26 职场文书
药学职务聘任书
2014/03/29 职场文书
《社戏》教学反思
2014/04/15 职场文书
数学系毕业生求职信
2014/05/29 职场文书
慈善捐赠倡议书
2014/08/30 职场文书
初中语文教师研修日志
2015/11/13 职场文书
2016年中秋节慰问信
2015/12/01 职场文书
Vertica集成Apache Hudi重磅使用指南
2022/03/31 Servers