1.smarty模板原理是个类因此建个类文件smarty.class.phpphp
<?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.举个例子html
在smarty文件夹里找到project文件夹在里面建立本身的文件夹个人是main,在文件夹里创PHP文本xiugai.php数组
例子以下:浏览器
引入类缓存
调用assign的方法,往里面存变量aa aa的值是hellothis
$smarty调用display方法,显示aa.htmlurl
在templates文件夹里建立aa.html文件spa
在浏览器里访问PHP文件输出以下插件
查看网页源代码以下3d
访问的是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_))."/";//这是替换完的目录