smarty模板原理

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

原文地址:https://www.cnblogs.com/aqxss/p/6503638.html