1.smarty模板原理是个类所以建个类文件smarty.class.php
<?php class smarty { public $left = "{"; /*左分隔符*/ public $right = "}";/*右分隔符*/ //成员变量是个数组并且默认是个空的值() public $arr = array();//数组默认是空的() 用来存储变量 储存变量 //向模板里面注册变量(需要两个参数,名字和值) function assign($key,$value) { //$this里面找数组ass。在往ass数组里面加内容 $this->arr[$key] = $value;//往arr数组里存数变量 } //display方法用来显示模板的 function display($name)//括号里要给个模板名称或模板的路径 { } }
2.举个例子
在smarty文件夹里找到project文件夹在里面创建自己的文件夹我的是main,在文件夹里创PHP文本xiugai.php
例子如下:
引入类
调用assign的方法,往里面存变量aa aa的值是hello
$smarty调用display方法,显示aa.html
在templates文件夹里创建aa.html文件
在浏览器里访问PHP文件输出如下
查看网页源代码如下
访问的是xiugai.php页面,结果显示的却是aa.html模板页面
总结:display方法是把aa.html模板文件容拿到xiugai.php页面显示
另一个例子:
把aa变量的值(world)显示在xiugai.php页面
aa.html页面添加分隔符跟变量aa <{$aa}>
display方法有2个作用
(1)把模板拿到xiugai.php页面
(2)把变量解析<{$aa}>
通过模板名称name就能找到模板的路径
4.
<?php class smarty { public $left = "{"; /*左分隔符*/ public $right = "}";/*右分隔符*/ //成员变量是个数组并且默认是个空的值() public $arr = array();//数组默认是空的() 用来存储变量 储存变量 //向模板里面注册变量(需要两个参数,名字和值) function assign($key,$value) { //$this里面找数组ass。在往ass数组里面加内容 $this->arr[$key] = $value;//往arr数组里存数变量 } //display方法用来显示模板的 function display($name)//括号里要给个模板名称或模板的路径 { //找模板路径。加入$url代表模板的路径 $url = "/";//根据变量找到模板文件夹的路径后面拼上$name.得到个完整路径 //读取模板要用到个方法,文件操作的方法,如何读文件里的内容 $str = file_get_contents($url);//获取文件内容的方法,获取静态页面的全部内容之后返回个字符串$str //将str里面的某些内容作了替换。某些内容代表花符号里的变量进行了替换<{$aa}> 替换成嵌入php代码。<?php ecoh $arr[aa] ?> //将替换好的字符串保存到编译好的文件。他有个方法如下 file_put_contents($filename,$atr);//建个文件夹filename把遍历玩的$atr放进去 //将编译好的文件拿到当前页面显示 include($filename);//把PHP文件拿到当前页面显示 } }
5.init.inc.php这是smarty模板的入口文件
libs文件夹里面有Smarty.class.php这是smarty模板的核心类
Autoloader.php这是自动加载的类文件
plugins这个文件夹这里存放插件
sysplugins这个文件夹是系统插件
外层文件
cache放缓存文件
configs这个文件夹放配置文件
plugins放自己写的插件
templates放所有模板文件(静态网页)
templates_c放编译过的文件
6.定义一个常量以后可以在任何地方都可以访问ROOT
echo _FILE_;//能够取到当前文件的目录如下
dirname方法是取路径中的目录如下:
echo dirname(_FILE_);//取除了文件名除外的部分
echo str_replace();//查找替换需要三个参数 第一个参数(要替换的字符串找路径里的反斜杠[""双引号里一个反斜杠表示转义])(第二个参数是正斜杠)(第三个是要替换那个东西。替换【_FILE_】取出的目录)
echo str_replace("\","/",dirname(_FILE_))."/";//这是替换完的目录