PHP---------Smarty模板
Smarty模板
是做什么用的??
是将前端的显示和后台的逻辑进行分离,就相当于把前台显示的页面和后台要实现的某些功能的逻辑给分离出来了,分离在两个文件里,也就是说,前端只负责显示,后端只负责逻辑操作,就相当于cms一样。Smarty模板就是实现前后分离的,能够程序多人开发,比如说,美工就做前端程序员就做后端,实现分工开发,便于后期维护。比如这个页面看着不好看了,我在换一种风格,可以直接换掉模板就可以了。把Smarty模板放在你的程序文件加里就可以了,这个文件加的名字可以随便取。
这个文件加的名字可以随便取。
libs 是smarty模板的核心文件
这些文件是smarty模板里自带的
这是smarty的核心类(smarty为什么能实现前后分离,完全取决于这个类,根据这个类的方法来进行分离的)。这个类是我们要用到的
自动加载的意思
放插件的,smarty自带的插件。系统自带的插件
插件目录。系统核心插件,里面的插件可以拿来使用,里面都是类文件
Smarty就相当于我们做程序的核心目录,所有的程序代码都是在Smarty目录里写
要使用Smarty模板的话,就要引用类Smarty.class.php(它是Smarty的核心类)
Smarty.class.php如何实现前后端分离的????????
建了一个类文件
1 <?php
2 //模拟做了一个类
3
4 /*这个类前后端分离的*/
5
6 /* Smarty类文件*/
7 class Smarty
8 { //成员变量
9 public $left = "<{";//左分隔符
10 public $right = "}>"; //右分隔符 //这两个分割符是用来,在做phpcms的时候只要是在我们的模板里想要嵌入php的标签外层都加了一个花括号{},这个花括号就代表左分隔符、右分隔符,它是phpcms里面使用的模板所提供的左分隔符、右分隔符,也就是说phpcms里面他的左分隔符就是“{”、右分隔符就是“}”,就是要在模板里嵌入phpcms提供的标记必须要使用花括号{}括起来,花括号是从哪定义的就是从模板引擎的类文件里定义的,定义的是花括号{},所以当它遇到{}时就会把它当成变量来解析
11 public $attr = array();//存储变量信息,存储变量的数组
12
13 //向模板引擎注册变量(向模板里注册变量或者叫添加变量,使用的)
14 function assign()//它是成员变量.这个方法需要两个($name,$value)需要两个参数,变量名和变量的值
15 //function assign()这个方法量向模板里注册变量或者叫添加变量使用的
16 {
17 //调用这个function assign()方法,向$attr = array();数组里添加内容
18
19 $this->attr[$name] = $value;
20 }
21 //显示模板的方法
22 function display($filename)//需要一个参数,模板文件的路径(从这个页面通过相对路径或者绝对路径找到这个模板文件交给我)
23 { //这个方法怎么把静态的页面怎样拿过来之后显示静态的页面
24 //$filename是传过来静态页面路径,有路径可以获取里面的内容,
25
26
27 //获取模板文件的内容(获取静态页面的内容),的方法是file_get_contents($filename//参数是路径)
28 $str = file_get_contents($filename);//静态页面的所有内容都获取到了
29
30 /*
31 这就是它获取的内容,是字符串,这就是$str获取到的
32 <html>
33 <head></head>
34 <body>
35 <div><{$aa}></div> //<{$aa}>在这个位置输出一个$aa 的变量
36 </body>
37 </html>
38 */
39
40 //怎样把模板里的$aa,变成数组里有的内容
41 //调用display方法之前,先要往assign模板里注册变量。注册了一个名为assign(变量名为$aa的变量)的变量,在模板里要显示$aa的值
42 //把变量$aa替换成,数组里的$attr索引为aa的值
43
44 //用正则匹配模板里面的变量
45 /*<html>
46 <head></head>
47 <body>
48 <div><{$aa}></div>
49 </body>
50 </html>
51
52 //匹配<{$aa}>$aa里面的内容.如果瞒足<{}>当做Smarty的标签,就把这个标签替换成<?php echo $attr["aa"] ?>php的标记
53 */
54
55 //没有把替换好的内容直接输出,又做了一步
56
57 //将替换好的内容存到文件(相当于临时文件)里面,内容还是存在$str里,把内容写入文件,写入文件的方法是file_put_contents
58 $lujing = "./mobanc/aa.php";
59 file_put_contents($lujing,$str);
60
61
62 //将临时文件读取(到当前的页面显示):include的方法,相当于直接拿这个方法来时用
63 include($lujing);
64
65 }
66 }
67
68
比如,这个类做好以后
有一个文件---------“test.php”
“test.php”这个页面要使用类
新建了一个文件叫-----------test.php
这个文件要使用这个类了
<?php
//这个页面要引用这个类了"Smarty.class.php"
include("Smarty.class.php");
//这个页面访问的是“test.php”,但是要显示index.html,index.html里面需要显示一个变量$aa
//先造$smarty的对象
$smarty = new Smarty();
//前端就是:<div>{$aa}</div>,<div>里面要显示变量$aa的值
//在这个页面就要注册一个变量叫$aa
$smarty->assign("aa","12134");//smarty调用里面的方法assign(变量名,变量的值)
//要显示index.html页面,要调用smarty里面的display(路径)方法
$smarty->display("index.html");
在main文件夹下建一个文件--------“test.php”
访问“test.php”这个文件的话,需要使用smarty类
这个“test.php”文件,需要把smarty类引用
<?php
include("../libs/Smarty.class.php");//引用Smarty类
$smarty = new Smarty();//造对象
//可以调用里面的方法,注册变量
//调用$smarty里面的方法assign(变量名,变量值)注册变量
$smarty->assign("aa","123");
//调用$smarty里面的方法display(),去显示模板
$smarty->display("../templates/tese.html");//调用这个“tese.html”模板来显示
templates模板文件夹
在templates这个文件夹下新建了一个-------“test.php”
要显示的是“test.html”这个模板
//这个displaya()方法还用到了一个临时文件,这个临时文件存放在什么位置
这个文件夹是存放临时文件的
还有一个缓存文件存放在
缓存文件存放在,cache文件夹里面
总结:
在访问我们做“test.php”这个页面的时候,
我们需要做的几个事情:
【1】 做好这个“test.php”页面
【2】 做好模板
【3】 需要规定好临时文件存放的目录
【4】 还有一个格外的,缓存文件的目录
【5】 代码:
使用模板的话,需要用到很多文件夹,要对这些文件夹进行一个配置
配置好在用
建一个文件-------“init.inc.php”
他就是Smarty的配置文件。这个文件的位置可以随便放
<?php
define("ROOT",str_replace("\\","/",dirname(__FILE__)).'/'); //常量ROOT中指定项目根目录
echo __FILE__;//获取当前文件所在的位置
输出的结果是:::::
echo dirname(__FILE__); // dirname(__FILE__); 这个文件所在的文件夹
输出返回的结果:::::::
这个页面,是访问的页面
显示的结果:
例子:
显示的结果::
临时文件: