smarty模板原理

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_))."/";//這是替換完的目錄

相關文章
相關標籤/搜索