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程序设计有所帮助。