PHP模板引擎Smarty中变量的使用方法示例
本文实例讲述了PHP模板引擎Smarty中变量的使用方法。分享给大家供大家参考,具体如下:
一、概述:
Smarty是PHP众多模板引擎中的一个,它是根据PHP编写的一个类库。
Smarty的优点:
1、优化网站访问速度;
2、网页前端设计和程序的分离;
二、Smarty的安装
1、需要到Smarty的官方网站http://www.smarty.net/download.php下载最新的Smarty版本,比如下载的版本为:Smarty-2.6.18.tar.tar;
2、解压Smarty-2.6.18.tar.tar压缩包,会发现都很多文件和文件夹,除了libs文件夹外,其他的全部删除,都没有用;
3、当调用Smarty模板引擎时,应先使用PHP的require语句载入libs/Smarty.class.php这个文件。
三、Smarty类库的默认设置
require进Smarty.class.php文件后,如果需要对Smarty类库中的成员进行设置,有两种方法:一种是直接在Smarty.class.php文件中修改;一种是在初始化类库之后进行重新指定,一般使用后者。下面对Smarty类库中的成员属性进行说明:
1、$template_dir:设置网站中的模板文件存放的目录,默认目录是templates
2、$compile_dir:设置网站中编译文件存放的目录,默认目录是templates_c
3、$config_dir:定义用于存放模板特殊配置文件的目录,默认是configs
4、$left_delimiter:用于模板中的左结束符变量,默认是'{'
5、$right_delimiter:用于模板中的右结束符变量,默认是'}'
四、变量的使用:
Smarty中所有的访问都是基于变量的,下面通过一个实例来进行说明。
实例思路:主文件通过引入模板初始化配置文件(init.inc.php)和一个类,并对模板中的变量进行赋值显示。
首先,设置init.inc.php文件,作为Smarty模板的初始化配置文件
init.inc.php
<?php
define('ROOT_PATH',dirname(__FILE__));//定义网站根目录
requireROOT_PATH.'/libs/Smarty.class.php';//载入Smarty文件
$_tpl=newSmarty();//实例化一个对象
$_tpl->template_dir=ROOT_PATH.'/tpl/';//重新设置模板目录为根目录下的tpl目录
$_tpl->compile_dir=ROOT_PATH.'./com/';//重新设置编译目录为根目录下的com目录
$_tpl->left_delimiter='<{';//重新设置左定界符为'<{'
$_tpl->right_delimiter='}>';//重新设置左定界符为'}>'
?>
主文件index.php
<?php
require'init.inc.php';//引入模板初始化文件
require'Persion.class.php';//载入对象文件
global$_tpl;
$title='Thisisatitle!';
$content='Thisisbodycontent!';
/*
*一、从PHP中分配给模板变量;
*动态的数据(PHP从数据库或文件,以及算法生成的变量)
*任何类型的数据都可以从PHP分配过来,主要包括如下
*标量:string、int、double、boolean
*复合:array、object
*NULL
*索引数组是直接通过索引来访问的
*关联数组,不是使用[关联下标]而是使用.下标的方式
*对象是直接通过->来访问的
**/
$_tpl->assign('title',$title);
$_tpl->assign('content',$content);//变量的赋值
$_tpl->assign('arr1',array('abc','def','ghi'));//索引数组的赋值
$_tpl->assign('arr2',array(array('abc','def','ghi'),array('jkl','mno','pqr')));//索引二维数组的赋值
$_tpl->assign('arr3',array('one'=>'111','two'=>'222','three'=>'333'));//关联数组的赋值
$_tpl->assign('arr4',array('one'=>array('one'=>'111','two'=>'222'),'two'=>array('three'=>'333','four'=>'444')));//关联二维数组的赋值
$_tpl->assign('arr5',array('one'=>array('111','222'),array('three'=>'333','444')));//关联和索引混合数组的赋值
$_tpl->assign('object',newPersion('小易',10));//对象赋值
//Smarty中数值也可以进行运算(+-*/^……)
$_tpl->assign('num1',10);
$_tpl->assign('num2',20);
$_tpl->display('index.tpl');
?>
主文件index.php的模板文件index.tpl(搁置在/tpl/目录下)
<!DOCTYPEhtmlPUBLIC"-//W3C//DTDXHTML1.0Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<htmlxmlns="http://www.w3.org/1999/xhtml">
<head>
<metahttp-equiv="Content-Type"content="text/html;charset=utf-8"/>
<title><{$title}></title>
</head><body>
变量的访问:<{$content}>
<br/>
索引数组的访问:<{$arr1[0]}><{$arr1[1]}><{$arr1[2]}>
<br/>
索引二维数组的访问:<{$arr2[0][0]}><{$arr2[0][1]}><{$arr2[0][2]}><{$arr2[1][0]}><{$arr2[1][1]}><{$arr2[1][2]}>
<br/>
关联数组的访问:<{$arr3.one}><{$arr3.two}><{$arr3.three}>
<br/>
关联二维数组的访问:<{$arr4.one.one}><{$arr4.one.two}><{$arr4.two.three}><{$arr4.two.four}>
<br/>
关联和索引混合数组的访问:<{$arr5.one[0]}><{$arr5.one[1]}><{$arr5[0].three}><{$arr5[0][0]}>
<br/>
对象中成员变量的访问:<{$object->name}><{$object->age}>
<br/>
对象中方法的访问:<{$object->hello()}>
<br/>
变量的运算:<{$num1+$num2}>
<br/>
变量的混合运算:<{$num1+$num2*$num2/$num1+44}>
<br/>
</body>
</html>
Persion.class.php
<?php
classPersion{
public$name;//为了访问方便,设定为public
public$age;
//定义一个构造方法
publicfunction__construct($name,$age){
$this->name=$name;
$this->age=$age;
}
//定义一个hello()方法,输出名字和年龄
publicfunctionhello(){
return'您好!我叫'.$this->name.',今年'.$this->age.'岁了。';
}
}
?>
执行结果:
变量的访问:Thisisbodycontent! 索引数组的访问:abcdefghi 索引二维数组的访问:abcdefghijklmnopqr 关联数组的访问:111222333 关联二维数组的访问:111222333444 关联和索引混合数组的访问:111222333444 对象中成员变量的访问:小易10 对象中方法的访问:您好!我叫小易,今年10岁了。 变量的运算:30 变量的混合运算:94
更多关于PHP相关内容感兴趣的读者可查看本站专题:《smarty模板入门基础教程》、《PHP模板技术总结》、《PHP基于pdo操作数据库技巧总结》、《PHP运算与运算符用法总结》、《PHP网络编程技巧总结》、《PHP基本语法入门教程》、《php面向对象程序设计入门教程》、《php字符串(string)用法总结》、《php+mysql数据库操作入门教程》及《php常见数据库操作技巧汇总》
希望本文所述对大家基于smarty模板的PHP程序设计有所帮助。