说道框架(framework)那么必须要提到smarty模板,在口试时你可以不会任何的框架,但是如果不会smarty模板,那么口试官会认为你在说谎,由于险些所有的框架都是基于或借鉴smarty。
smarty模板先容
基于面向工具编程思想封装的类,实现前后台代码分离,降落耦合度,并且为后续的分工互助开拓做准备。Smarty(轻量,眇小)是编译性模板框架,体积小、速率快,支持缓存、全局站点配置等功能,是“旅行居家”开拓必备神器!
利用步骤
1、在官网www.smarty.net 下载最新版,解压,复制libs文件夹到项目目录;
2、在对应的项目目录下创建4个文件夹分别为模板文件夹(保存前台页面,必须,一样平常命名为templates)、编译(自动整理前后台页面,从第二次访问开始不须要重新重新整合,一样平常命名为templates_c,compile必须)、配置文件夹(运用于全体站点的配置)、缓存文件夹
3、测试
新建一个后台页面index.php
<?php
//引入核心类库文件
include_once('libs/Smarty.class.php');
//实例化类
$smarty=new Smarty();
//定义配置
//用户访问的后台页面所有的路径都是该当以访问后台页面作为参照物!!!
$smarty->setTemplateDir('templates');//定义模板路径
//定义编译路径
$smarty->setCompileDir('templates_c');
//定义配置文件路径
$smarty->setConfigDir('config');
//定义缓存路径
$smarty->setCacheDir('cache');
//修正默认定界符避免和JS冲突!
!
!
$smarty->left_delimiter='<{';
$smarty->right_delimiter='}>';
$test='我是test变量';
$smarty->assign(\"大众test\"大众,$test);//建议注册的变量名和键保持同等
//注册一个索引数组
$smarty->assign(\"大众arr1\公众,array('a','b','c'));
//注册一个引用数组,section无法用于引用数组
$smarty->assign(\"大众arr2\"大众,array(\公众a\"大众=>1,\"大众b\"大众=>2,\公众c\公众=>3));
//开启调测
//$smarty->debugging=true;
//自动整理前后台页面
$smarty->display('index.tpl');
$smarty->assign('test1','test1');//这个变量无法利用,想一想为什么?
?>
在templates文件加新建index.tpl文件
<!DOCTYPE html PUBLIC \"大众-//W3C//DTD XHTML 1.0 Transitional//EN\公众 \"大众http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\"大众>
<html xmlns=\"大众http://www.w3.org/1999/xhtml\公众>
<head>
<meta http-equiv=\"大众Content-Type\公众 content=\公众text/html; charset=utf-8\公众 />
<title>无标题文档</title>
</head>
<body>
我是网站根目录下index.php的前台index.tpl页面<br />
输出后台变量test的值:<font color=\公众red\"大众 style=\"大众font-weight:bold;\公众><{$test}></font>XXXX<br />
该变量无法输出:<{$test1}><br />
遍历输出索引数组:
<{section name=i loop=$arr1}>
索引:<{$smarty.section.i.index}>值:<{$arr1[i]}>
<{sectionelse}>
没有符合的记录
<{/section}>
<br />
遍历引用数组(用foeach,foreach也可以用于索引数组):
<{foreach from=$arr2 item=v key=k}>
键:<{$k}>值:<{$v}>
<{foreachelse}>
没有符合的记录集
<{/foreach}>
<br />
新版本写法:
<{foreach $arr2 as $k=>$v}>
键:<{$k}>值:<{$v}>
<{/foreach}>
</body>
</html>
访问后台页面!
!
!
!
!
测试结果
变量解析
后台注册,语法 $smarty工具->assign(‘键’,mixed 值);
前台在须要的位置显示,语法 {$键}
开启调测
$smarty->debugging=true;
编译事理
smarty模板调用display函数自动整合前后台页面,是从templates文件夹下查找前台地址自动把访问的后台php页面和该前台页面更换成内嵌PHP代码,天生编译文件,文件名XXX.前台模板名.tpl.php,第二次访问自动把这个页面相应给用户,加快速率,只要PHP后台代码不改变,这个编译页面就不会再次天生。