smarty基础指南

smarty 是PHP的一个模板引擎,使得其内部程序逻辑与外部表现逻辑可分离开来,在MVC中负责实现view层的相关功能。

最新版的smarty可在官网下载,官网地址:http://www.smarty.net/

下载完成之后解压,把里面的libs文件夹改名为smarty,复制到本地的web目录下。

至于web目录,如果本机没有web服务器,可以下载xampp软件,在官网可找到,安装之后,htdocs文件夹下即为web根目录。


下面就可以使用smarty了,附下我做的例子,涵盖了一些smarty的用法。

注:smarty的注释格式为 {* 注释 *}

在htdocs目录下新建一个test-smarty目录,test.php文件放在其中,然后在test-smarty里再建一个template目录(存放模板)、template_c目录(存放模板编译的php)和cache目录(存放缓存)。

test.php代码:

left_delimiter="{";  //左定界符,smarty处理左右定界符之间的内容
	$smarty->right_delimiter="}";  //右定界符
	$smarty->template_dir="template";  //HTML模板的地址
	$smarty->compile_dir="template_c";  //模板编译生成php文件的地址
	$smarty->cache_dir="cache";  //缓存地址
	//缓存的两个额外配置
	$smarty->caching=true;  //开启缓存
	$smarty->cache_lifetime=120;  //缓存时间

	//两方法assign()和display()
	$smarty->assign('title','news HI');  //对smarty模板中的变量赋值
	$arr=array('title'=>'smarty-study','author'=>'xiao ming');  //一维数组
	$smarty->assign('arr',$arr);
	$arr2=array(
		array('title1'=>'world1','title2'=>'world2'),
		array('title1'=>'world3','title2'=>'world4')
	);                                    //二维数组,可测试循环
	$smarty->assign('arr2',$arr2);
	$smarty->assign('time',time());  //获取当前时间,赋值给time变量
	$smarty->assign('blank',"");  //建立一个空变量
	$smarty->assign('url',"http://www.baidu.cn");  //建立一个空变量
	$smarty->assign('long',"happy new year!
		happy new year!");  //带换行的字符串
	$smarty->assign('score',91);  //测试条件判断
	class myObject{
		function meth1($params){
			return $params[0].'已经'.$params[1];
		}
	}  //定义一个类
	$myobj=new myObject();  //实例化类的对象
	$smarty->assign('myobj',$myobj);
	function test($params){
		// print_r($params);  //输出参数
		// exit;   //断点,后面的不执行了
		$p1=$params['p1'];
		$p2=$params['p2'];
		return '传入的参数1为'.$p1.',传入的参数2为'.$p2;
	}                                           //自定义的函数
	$smarty->registerPlugin('function','f_test','test');  //注册test函数,注册后叫f_test
	$smarty->assign('str','hello,how are you。hello,how are you。 hello,how are you。'); //测试block插件
	$smarty->display('test.html');  //展现模板,后缀可以为任意字符,常用html文件
?>
“两方法”之前为配置部分,后面为具体的使用部分。

最后一句display方法则展现具体模板,这个模板test.html放在htdocs/test-smarty/template中。

test.html代码:




	
	smarty


	

{$title}

{$arr.title}{$arr.author}

{$title|capitalize}

{$title|cat:' today':' happy'}

{$time|date_format}

{$blank|default:'here'}

{$url|escape:'url'}

{$title|lower}

{$title|upper}

{$long|nl2br}

{if $score gt 90} 优秀 {elseif $score gt 60} 及格 {else} 不及格 {/if}

{section name=i loop=$arr2} {$arr2[i].title1} {$arr2[i].title2} {/section}

{foreach $arr2 as $one} {$one.title1} {$one.title2} {foreachelse} no content {/foreach}

{include file="header.tpl" myname="kate"}

{$myobj->meth1(array('苹果','熟了'))}

{'Y-m-d'|date:$time}

{'H'|str_replace:'D':$title}

{f_test p1="abc" p2="def"}

{test width=150 height=200}

{$time|test:"Y-m-d H:i:s"}

{test2 replace='true' maxnum=20} {$str} {/test2}


如此,在浏览器中输入“http://localhost/test-smarty/test.php”即可显示结果。


代码中最后演示了smarty插件,说明一下:

smarty插件,本质上是函数。
常用类型:
function 函数插件
modifier 修饰插件(变量调节器插件) 
block 区块插件
使用方法:将写好的插件放在smarty目录下的plugins中。

上面添加的三个插件文件如下。

function.test.php:


modifier.test.php:


block.test2.php:






你可能感兴趣的:(PHP)