更多课程 选择中心

PHP培训
美国上市教育机构

400-111-8989

PHP培训

Smarty3.1.4基础

  • 发布:PHP培训
  • 来源:PHP教程
  • 时间:2016-08-25 14:41

3.1 smarty处理过程

smarty将php源文件,首先编译成中间文件(也是php),如果启用缓存,再根据编译文件生成缓存文件(也是php),需要缓存的部分全部是硬编码。

之后的每次访问都会访问编译文件(如果编译文件已经存在),一次编译多次调用(可以是单文件的多次,也可以是多文件的多次),

如果启用缓存且有缓存文件而且没有过期,则直接访问缓存文件,跳过编译文件。编译文件一经生成,就不会被自动更新,除非模板文件或者配置文件更改。

源php文件修改是不会引发重新编译的。一旦编译文件重新生成,缓存文件也必然重新生成。

Smarty允许有两种特殊的编译设置存在:

1、 任何时候都不自动重新编译(上线阶段):只有没有该文件的编译文件时才生成,

模板文件或者配置文件的更改,不会引发重新编译。

$smarty->setCompile_check(false)

#默认为true,false表示任何时候都不在发生文件变更的情况下生成编译文件,除了无编译文件。

$smarty->getCompile_check() #获得当前编译检查的设置

2、任何时候都重新编译(调试阶段):任何时候都重新编译。

$smarty->setForce_compile(true) #默认为false,true表示每次都重新编译(启用缓存的话,每次都重新缓存)

$smarty->getForce_compile() #获得当前强制编译的设置

3.2 分界符

在模板文件中,区分普通html代码和smarty代码靠的是分界符。默认情况下是“{ }“,但是与js和css相冲突。

可以进行变更。在3.0中模板标签将不支持空格,如{ $abc }在Smarty2中可以识别的,

但是3.0里头就不行了,必须这样{$abc},这样是为了能够更好的支持javascript和css。

$smarty->left_delimiter = “<{“; #左分界符,2.0属性,3.0沿用

$smarty->right_delimiter = “}>”; #右分界符,2.0属性,3.0沿用

注意:将默认分界符修改后,在3.0模板中仍然不支持空格,比如<{ $abc }>,无效。

3.3 注释

{* smarty用*包含的文字为注释内容 *}

如果默认分界符修改为“<{}>“, <{* smarty用*包含的文字为注释内容 *}>。注释中的模板变量无效。

3.4 模板包含文件

格式 {include file=”要包含的文件名称 “}

Head.tpl

这是顶部内容,欢迎你,{$name}


Index.tpl中加一下代码

{include file=”head.tpl”}

输出结果:

这是顶部内容,欢迎你,韩灵稚。

您好,韩灵稚!

除了包含其他配置文件,还可以包含html、php(需要开启smarty支持php模板的选项,

最好使用include_php函数)。包含文件还可以使用传参。

Head.tpl

{$nr},欢迎你,{$name}


Index.tpl

{include file=”head.tpl” nr=”这是顶部内容”}

输出结果同上。

3.5 载入配置文件

可以预先规定一系列的变量与值的对应,并放在配置文件中,在使用时载入。

配置文件一般放在configs文件夹中,可以自定义。

My.conf

gv = “my.conf中的全局变量” #全局配置变量,任何时候调用,都将被载入

#如果$sections,未设置,显示全部变量

[color] #局部配置变量

fontcolor = “red” #如果$sections,设置为red,只显示全局变量和[color]中的变量

[size] #局部配置变量

fontsize = “12px” #如果$sections,设置为size,只显示全局变量和[size]中的变量

调用配置文件有两种方法,一种是在源文件处,一种是在模板文件处。

源文件处:$smarty->configLoad($config_file, $sections = null)

模板文件处:{config_load file=”载入的配置文件” section=”选取的局部变量(可选)”scope=“作用模板范围(可选)“}

如果使用源文件的方法,载入的配置文件变量的作用模板范围自动为global,

而且可以应用到多个模板中(smarty对象调用了多个模板)。

如果使用后者,灵活性更大。单个模板中config_load的scope参数的范围可以是local

(本模板,只能本模板使用这些变量), parent(父模板或者文件) 或

global(同一个smarty对象所调用的所有模板,其他模板不需要再载入该配置文件)

在模板文件中使用配置变量

{#配置变量#}或者{$smarty.config.变量名称}

【相关函数】

$smarty->getConfigVariable($variable) #返回某个模板变量,该变量必须是parent或者是global

$smarty->getConfigVars($varname = null) #返回模板变量数组,或者单个变量。

该变量或者变量组必须是parent或者是global

$smarty->clearConfig($varname = null) #清除所有配置变量或者指定的一个配置变量

$smarty->setConfig_overwrite(false) #如果设变量为真,则从配置文件中读取出来的变量(如果变量名称相同)

将会由最后一个值覆盖。反之,变量将会放到一个数组中。

不能用数组索引去访问,可以使用cycle函数。该属性也有getConfig_overwrite函数。

$smarty->setConfig_booleanize(true); #设置为true的话,

配置文件中的on/true/yes/1 和 off/false/no/0值会自动转化为布尔值,

false将变为字符串(如果作为判断条件,永远为真)。

该属性也有getConfig_booleanize函数。

3.6 环境配置

Smary脚本中是可以动态设置编译、模板、缓存、配置路径。

$smarty->template_dir = “./templates”; #设置模板目录,2.0设置方法,3.0沿用但不推荐

$smarty->compile_dir = “./templates_c”; #设置编译目录,2.0设置方法,3.0沿用但不推荐

$smarty->config_dir = ‘./configs/’; #设置配置目录,2.0设置方法,3.0沿用但不推荐

$smarty->cache_dir = ‘./cache/’; #设置缓存目录,2.0设置方法,3.0沿用但不推荐

Smary在3.0中对属性进行了封装。可以使用如下方法进行访问获得目录。

$smarty->getCacheDir(); #得到当前缓存目录路径

$smarty->getTemplateDir(); #得到当前模板目录路径的数组

$smarty->getConfigDir(); #得到当前 配置目录路径

$smarty->getCompileDir(); #得到当前编译目录路径

$smarty->getPluginsDir() #得到当前插件目录路径数组

同样用下面的方法进行目录设置

$smarty->setTemplateDir(“../smarty1/templates/”); #设置新的模板目录,

注意设置后模板目录的数组只有该值一个,不管原来有几个值。

$smarty->setCompileDir(“../smarty1/templates_c/”); #设置新的编译目录

$smarty->setConfigDir(“../smarty1/configs/”); #设置新的配置目录

$smarty->setCacheDir(“../smarty1/cache/”); #设置新的缓存目录

$smarty->addTemplateDir(“templates”); #引用的模板文件的路径必须在模板目录数值中,

否则报错,由于仍然用原来的模板文件,所以添加上原来模板路径,这样模板数组中有两个路径。

$smarty->addPluginsDir(‘myplugins’); #添加一个新的插件目录,如果用set将取消插件数组,变为单指

【相关函数】

$smarty->utility->compileAllTemplates($extention = ‘.tpl’, $force_compile = false,

$time_limit = 0, $max_errors = null) #直接编译所有模板目录下所有模板文件,用处不大。

$smarty->utility->clearCompiledTemplate($resource_name = null,

$compile_id = null, $exp_time = null) #清除编译目录下的编译文件或者指定条件的编译文件。

$smarty-> setDefault_template_handler_func($fucname)

#该函数在模板不能从它的源目录下获取时会得到调用,没有太大的意义,可以设置异常处理。

预约申请免费试听课

填写下面表单即可预约申请免费试听!怕钱不够?可就业挣钱后再付学费! 怕学不会?助教全程陪读,随时解惑!担心就业?一地学习,可全国推荐就业!

上一篇:Smarty3调试
下一篇:Smarty语法基础篇(一)

什么是smarty?

smarty 模板继承

smarty语法高级篇

Smarty语法基础篇(二)

选择城市和中心
黑龙江省

吉林省

河北省

贵州省

云南省

广西省

海南省