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