. 常用配置选项

在使用Smarty模板引擎之前,我们必须先学习如何配置Smarty的选项。而在Smarty的常见选项中,我们首先必须了解4个最基本的目录选项。

模板目录(template):本目录用于存储模板文件,需要渲染对应文件时把文件相对地址作为参数传入display方法即可。比如,我们有一个模板文件地址位于template/test/index.tpl,那么我们则应当使用“$smarty->display('test/index.tpl');”语句来渲染该模板。

编译模板目录(template_c):本目录主要用于存储Smarty模板引擎产生的模板编译文件,Smarty也正是使用这种方法来提高执行效率的。当然,我们在部署项目时一定要注意该目录必须是可写的。

缓存目录(cache):Smarty允许把展示过的模板缓存起来,使用此功能将进一步提高模板引擎的运行速度。当然,我们还可以通过设置cache_lifetime属性来控制缓存文件的有效时间。

配置目录(configs):这个目录可以用于保存Smarty模板引擎的配置文件,不过在实际项目中使用得比较少,我们经常会把配置放入项目统一的配置目录。

在实际项目中我们经常使用继承和重载的方式来定制和配置我们自己的Smarty模板类。比如,在代码清单3-16中,我们就实现了一个自定义的My_Smarty类,此类中设置了Smarty模板的必要目录和缓存的生效时间。

<?php
require_once "Smarty.class.php"; /**
* 继承Smarty
*/
class MySmarty extends Smarty{
public function _construct()
{
parent::_construct();
/**
* 依次设置模板目录、编译模板目录、缓存目录、配置文件目录、插件目录。
* 注意:在设置插件目录时要把Smarty自带的插件也包含进去。
*/
$this->setTemplateDir(dirname(__FILE__).'/templates/')
->setCompileDir(dirname(__FILE__).'templates_c/')
->setCacheDir(dirname(__FILE__).'/cache/')
->setConfigDir(dirname(__FILE__).'/configs')
->setPluginsDir(
array(SMARTY_PLUGINS_DIR,
dirname(__FILE__) . '/plugins/'));
/*依次设置左界定符、右界定符*/
$this->left_delimiter="{";
$this->right_delimiter="}"; $this->caching=true;
$this->cache_lifetime=120;//秒 // 设置默认变量
$this->assign('app_name', 'My App');
} public function enableDebug() {
$this->debugging = TRUE;
} }
$T=new MySmarty();
$T->testInstall();

Smarty 使用继承方式实现配置的更多相关文章

  1. js的三种继承方式及其优缺点

    [转] 第一种,prototype的方式: //父类 function person(){ this.hair = 'black'; this.eye = 'black'; this.skin = ' ...

  2. JavaScript继承方式详解[转]

    js继承的概念 js里常用的如下两种继承方式: 原型链继承(对象间的继承) 类式继承(构造函数间的继承) 由于js不像java那样是真正面向对象的语言,js是基于对象的,它没有类的概念.所以,要想实现 ...

  3. 从jQuery中学习来的另一种继承方式(技巧)

    遵从Js的原型链规则,利用js灵活的特性灵活地改造原型,可以实现各种创意地继承方式,昨天研究了jQuery,对作者实现继承的方式感到佩服,他对js原型和原型链的理解比较透彻,运用自如.这里给出jQue ...

  4. 重新理解JS的6种继承方式

    写在前面 一直不喜欢JS的OOP,在学习阶段好像也用不到,总觉得JS的OOP不伦不类的,可能是因为先接触了Java,所以对JS的OO部分有些抵触. 偏见归偏见,既然面试官问到了JS的OOP,那么说明这 ...

  5. js两种定义函数、继承方式及区别

    一:js两种定义函数的方式及区别 1:函数声明: function sayA() { alert("i am A"); } 2:函数表达式: var sayB = function ...

  6. 谈谈JavaScript的2种主要继承方式

    今天给自己巩固一下js的继承知识,基础不好,有不对的地方,请尽量拍砖,越重越好. js继承方法最主要的是2种,一种是通过原型的方式,一种是通过借用call&apply的构造函数方式. 1.原型 ...

  7. C++的三种继承方式简述

    C++对父类(也称基类)的继承有三种方式,分别为:public继承.protected继承.private继承.三种继承方式的不同在于继承之后子类的成员函数的"可继承性质". 在说 ...

  8. C++学习15 继承权限和继承方式

    C++继承的一般语法为: class 派生类名:[继承方式] 基类名{ 派生类新增加的成员 }; 继承方式限定了基类成员在派生类中的访问权限,包括 public(公有的).private(私有的)和 ...

  9. Javascript的四种继承方式

    在Javascript中,所有开发者定义的类都可以作为基类,但出于安全性考虑,本地类和宿主类不能作为基类,这样可以防止公用访问编译过的浏览器级的代码,因为这些代码可以被用于恶意攻击. 选定基类后,就可 ...

随机推荐

  1. Lenovo G40-30 Install win7

    SATA Controller mode 两种硬盘模式,如果装XP应该要选第二种模式,兼容:据说ACHI比IDE模式性能好,开机能快点, 装Win7,两种模式都可以,只不过装Win7一般人都用ACHI ...

  2. uva 317 - Hexagon(规律推导)

    题目连接:317 - Hexagon 题目大意:在一个19个六边形组成的图形上玩一个游戏,给出9个数字, 分成3组, 分别可以填在左上角, 上, 有上角,因为对于小六边形来说, 对边的数是相同的, 然 ...

  3. C++11 tuple

    tuple元组定义了一个有固定数目元素的容器,其中的每个元素类型都可以不相同,这与其他容器有着本质的区别.是对pair的泛化. 首先来介绍元组的创建和元组元素的访问.通过make_tuple()创建元 ...

  4. DELL R720服务器安装Windows Server 2008 R2 操作系统图文详解

    DELL R720服务器安装Windows Server 2008 R2 操作系统图文详解 说明:此文章中部分图片为网络搜集,所以不一定为DELL R720服务器安装界面,但可保证界面内容接近DELL ...

  5. mac下的home键、end键以及insert键的替代

    最近用android模拟器模拟东西,发现模拟器的home快捷键是键盘上的home键,这让我在windows下很好找,换到mac下找了老半天也没找到,后来才查到是有替代键的,放到这里做备份 home键f ...

  6. Java基础知识强化之IO流笔记04:throw和throws的区别

    1. throw概述 在功能方法内部出现某种问题,程序不能继续运行,需要进行跳转时,就用throw把异常对象抛出. 2. 案例演示: (1) package com.himi.throwdemo; p ...

  7. Java基础知识强化93:算一下你来到这个世界多少天的案例

    1. 分析: (1)键盘录入你的出生年月日 (2)把该字符串转换为一个日期 (3)通过该日期得到一个毫秒值 (4)获取当前时间的毫秒值 (5)用(4)-(3)得到一个毫秒值 (6)把E的毫秒值转换为天 ...

  8. git 更换远程仓库地址

    1. 更改软件仓库指向.在github改了用户名和仓库名称后,仓库地址也相应的发生的变化,这时候就需要更新本地仓库以指向新的远程仓库地址: $git remote set-url origin git ...

  9. linux命令之partprobe

    使用fdisk工具只是将分区信息写入到磁盘,如果需要使用mkfs格式化并使用分区,则需要重新启动系统.partprobe 是一个可以修改kernel中分区表的工具,可以使kernel重新读取分区表而不 ...

  10. 查看linux系统版本

    1.查看内核版本 #cat /proc/version Linux version 2.6.18-164.el5 (mockbuild@x86-003.build.bos.redhat.com) (g ...