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初学者头疼问题总结
Oct 09 PHP
用PHP实现Ftp用户的在线管理
Feb 16 PHP
PHP垃圾回收机制引用计数器概念分析
Jun 24 PHP
PHP 安全检测代码片段(分享)
Jul 05 PHP
phpmyadmin出现Cannot start session without errors问题解决方法
Aug 14 PHP
PHP中提问频率最高的11个面试题和答案
Sep 02 PHP
利用PHP自动生成印有用户信息的名片
Aug 01 PHP
PHP图片裁剪与缩放示例(无损裁剪图片)
Feb 08 PHP
PHP实现分布式memcache设置web集群session同步的方法
Apr 10 PHP
php curl优化下载微信头像的方法总结
Sep 07 PHP
PHP实现的微信APP支付功能示例【基于TP5框架】
Sep 16 PHP
PhpSpreadsheet中文文档 | Spreadsheet操作教程实例
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
关于拼配咖啡,你要知道
2021/03/03 咖啡文化
优化php效率,提高php性能的一些方法
2011/03/24 PHP
PHP新手NOTICE错误常见解决方法
2011/12/07 PHP
php使用json_decode后数字对象转换成了科学计数法的解决方法
2017/02/20 PHP
浅谈thinkphp的nginx配置,以及重写隐藏index.php入口文件方法
2019/10/12 PHP
javascript学习笔记(八) js内置对象
2012/06/19 Javascript
Jquery实现视频播放页面的关灯开灯效果
2013/05/27 Javascript
利用jsonp跨域调用百度js实现搜索框智能提示
2016/08/24 Javascript
浅谈Web页面向后台提交数据的方式和选择
2016/09/23 Javascript
学好js,这些js函数概念一定要知道【推荐】
2017/01/19 Javascript
深入理解JavaScript中的尾调用(Tail Call)
2017/02/07 Javascript
利用types增强vscode中js代码提示功能详解
2017/07/07 Javascript
浅谈微信小程序flex布局基础
2018/09/10 Javascript
JavaScript原型对象原理与应用分析
2018/12/27 Javascript
利用vue-i18n实现多语言切换效果的方法
2019/06/19 Javascript
使用js实现一个简单的滚动条过程解析
2019/09/10 Javascript
Layui事件监听的实现(表单和数据表格)
2019/10/17 Javascript
NUXT SSR初级入门笔记(小结)
2019/12/16 Javascript
解决Vue-cli无法编译es6的问题
2020/10/30 Javascript
Python编写生成验证码的脚本的教程
2015/05/04 Python
Python中函数及默认参数的定义与调用操作实例分析
2017/07/25 Python
使用python实现knn算法
2017/12/20 Python
用python与文件进行交互的方法
2018/03/01 Python
python微信公众号之关键词自动回复
2018/06/15 Python
Python正则表达式匹配数字和小数的方法
2019/07/03 Python
Python大数据之使用lxml库解析html网页文件示例
2019/11/16 Python
Win10环境中如何实现python2和python3并存
2020/07/20 Python
纯CSS3实现手风琴风格菜单具体步骤
2013/05/06 HTML / CSS
HTML5实现WebSocket协议原理浅析
2014/07/07 HTML / CSS
印度尼西亚最大和最全面的网络商城:Blibli.com
2017/10/04 全球购物
Bibloo荷兰:女士、男士和儿童的服装、鞋子和配饰
2019/02/25 全球购物
动物科学专业求职信
2014/07/27 职场文书
2015年元旦演讲稿
2014/09/12 职场文书
小学国庆节活动方案策划书
2014/09/16 职场文书
单位婚育证明范本
2014/11/21 职场文书
Nginx实现负载均衡的项目实践
2022/03/18 Servers