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_))."/";//这是替换完的目录