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的中问验证码
Nov 25 PHP
php中看实例学正则表达式
Dec 25 PHP
一个php Mysql类 可以参考学习熟悉下
Jun 21 PHP
php源码分析之DZX1.5字符串截断函数cutstr用法
Jun 17 PHP
PHP中的Session对象如何使用
Sep 25 PHP
php表单提交实例讲解
Nov 12 PHP
php实现给一张图片加上水印效果
Jan 02 PHP
PHPCrawl爬虫库实现抓取酷狗歌单的方法示例
Dec 21 PHP
PHP抽象类基本用法示例
Dec 28 PHP
YII框架模块化处理操作示例
Apr 26 PHP
基于laravel-admin 后台 列表标签背景的使用方法
Oct 03 PHP
PHP笛卡尔积实现原理及代码实例
Dec 09 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 截取字符串函数整理(支持gb2312和utf-8)
2010/02/16 PHP
laravel 5 实现模板主题功能
2015/03/02 PHP
php中删除数组的第一个元素和最后一个元素的函数
2015/03/07 PHP
Yii实现显示静态页的方法
2016/04/25 PHP
PHP中单例模式与工厂模式详解
2017/02/17 PHP
Javascript 面向对象编程(coolshell)
2012/03/18 Javascript
toggle()隐藏问题的解决方法
2014/02/17 Javascript
更快的异步执行(setTimeout多浏览器)
2014/08/12 Javascript
thinkphp实现无限分类(使用递归)
2015/12/19 Javascript
node.js+express制作网页计算器
2016/01/17 Javascript
jQuery简单实现提交数据出现loading进度条的方法
2016/03/29 Javascript
js简单时间比较的方法
2016/08/02 Javascript
AngularJS表单详解及示例代码
2016/08/17 Javascript
JavaScript实现三级级联特效
2017/11/05 Javascript
一次Webpack配置文件的分离实战记录
2018/11/30 Javascript
如何根据业务封装自己的功能组件
2019/04/19 Javascript
自定义javascript验证框架示例【附源码下载】
2019/05/31 Javascript
js构造函数constructor和原型prototype原理与用法实例分析
2020/03/02 Javascript
antd-mobile ListView长列表的数据更新遇到的坑
2020/04/08 Javascript
python中enumerate的用法实例解析
2014/08/18 Python
在阿里云服务器上配置CentOS+Nginx+Python+Flask环境
2016/06/18 Python
Python安装第三方库及常见问题处理方法汇总
2016/09/13 Python
浅谈numpy数组中冒号和负号的含义
2018/04/18 Python
利用pyuic5将ui文件转换为py文件的方法
2019/06/19 Python
keras load model时出现Missing Layer错误的解决方式
2020/06/11 Python
python爬虫构建代理ip池抓取数据库的示例代码
2020/09/22 Python
Python利用socket模块开发简单的端口扫描工具的实现
2021/01/27 Python
Senreve官网:美国旧金山的奢侈手袋品牌
2019/03/21 全球购物
青年文明号服务承诺
2014/03/31 职场文书
医学专业大学生求职信
2014/07/12 职场文书
债务追讨律师函
2015/06/24 职场文书
《中国古代诗歌散文欣赏》高中语文教材
2019/08/20 职场文书
Python机器学习之KNN近邻算法
2021/05/14 Python
Python Pandas pandas.read_sql_query函数实例用法分析
2021/06/21 Python
悬疑名作《朋友游戏》动画无字ED宣传片 新角色公开
2022/04/13 日漫
WIN10使用IIS部署ftp服务器详细教程
2022/08/05 Servers