Smarty模板php
是作什麼用的??html
是將前端的顯示和後臺的邏輯進行分離,就至關於把前臺顯示的頁面和後臺要實現的某些功能的邏輯給分離出來了,分離在兩個文件裏,也就是說,前端只負責顯示,後端只負責邏輯操做,就至關於cms同樣。Smarty模板就是實現先後分離的,可以程序多人開發,好比說,美工就作前端程序員就作後端,實現分工開發,便於後期維護。好比這個頁面看着很差看了,我在換一種風格,能夠直接換掉模板就能夠了。把Smarty模板放在你的程序文件加里就能夠了,這個文件加的名字能夠隨便取。前端
這個文件加的名字能夠隨便取。程序員
libs 是smarty模板的核心文件後端
這些文件是smarty模板裏自帶的數組
這是smarty的核心類(smarty爲何能實現先後分離,徹底取決於這個類,根據這個類的方法來進行分離的)。這個類是咱們要用到的緩存
自動加載的意思前後端分離
放插件的,smarty自帶的插件。系統自帶的插件this
插件目錄。系統核心插件,裏面的插件能夠拿來使用,裏面都是類文件spa
Smarty就至關於咱們作程序的核心目錄,全部的程序代碼都是在Smarty目錄裏寫
要使用Smarty模板的話,就要引用類Smarty.class.php(它是Smarty的核心類)
Smarty.class.php如何實現先後端分離的????????
建了一個類文件
1 <?php 2 //模擬作了一個類 3 4 /*這個類先後端分離的*/ 5 6 /* Smarty類文件*/ 7 class Smarty 8 { //成員變量 9 public $left = "<{";//左分隔符 10 public $right = "}>"; //右分隔符 //這兩個分割符是用來,在作phpcms的時候只要是在咱們的模板裏想要嵌入php的標籤外層都加了一個花括號{},這個花括號就表明左分隔符、右分隔符,它是phpcms裏面使用的模板所提供的左分隔符、右分隔符,也就是說phpcms裏面他的左分隔符就是「{」、右分隔符就是「}」,就是要在模板裏嵌入phpcms提供的標記必需要使用花括號{}括起來,花括號是從哪定義的就是從模板引擎的類文件裏定義的,定義的是花括號{},因此當它遇到{}時就會把它當成變量來解析 11 public $attr = array();//存儲變量信息,存儲變量的數組 12 13 //向模板引擎註冊變量(向模板裏註冊變量或者叫添加變量,使用的) 14 function assign()//它是成員變量.這個方法須要兩個($name,$value)須要兩個參數,變量名和變量的值 15 //function assign()這個方法量向模板裏註冊變量或者叫添加變量使用的 16 { 17 //調用這個function assign()方法,向$attr = array();數組裏添加內容 18 19 $this->attr[$name] = $value; 20 } 21 //顯示模板的方法 22 function display($filename)//須要一個參數,模板文件的路徑(從這個頁面經過相對路徑或者絕對路徑找到這個模板文件交給我) 23 { //這個方法怎麼把靜態的頁面怎樣拿過來以後顯示靜態的頁面 24 //$filename是傳過來靜態頁面路徑,有路徑能夠獲取裏面的內容, 25 26 27 //獲取模板文件的內容(獲取靜態頁面的內容),的方法是file_get_contents($filename//參數是路徑) 28 $str = file_get_contents($filename);//靜態頁面的全部內容都獲取到了 29 30 /* 31 這就是它獲取的內容,是字符串,這就是$str獲取到的 32 <html> 33 <head></head> 34 <body> 35 <div><{$aa}></div> //<{$aa}>在這個位置輸出一個$aa 的變量 36 </body> 37 </html> 38 */ 39 40 //怎樣把模板裏的$aa,變成數組裏有的內容 41 //調用display方法以前,先要往assign模板裏註冊變量。註冊了一個名爲assign(變量名爲$aa的變量)的變量,在模板裏要顯示$aa的值 42 //把變量$aa替換成,數組裏的$attr索引爲aa的值 43 44 //用正則匹配模板裏面的變量 45 /*<html> 46 <head></head> 47 <body> 48 <div><{$aa}></div> 49 </body> 50 </html> 51 52 //匹配<{$aa}>$aa裏面的內容.若是瞞足<{}>當作Smarty的標籤,就把這個標籤替換成<?php echo $attr["aa"] ?>php的標記 53 */ 54 55 //沒有把替換好的內容直接輸出,又作了一步 56 57 //將替換好的內容存到文件(至關於臨時文件)裏面,內容仍是存在$str裏,把內容寫入文件,寫入文件的方法是file_put_contents 58 $lujing = "./mobanc/aa.php"; 59 file_put_contents($lujing,$str); 60 61 62 //將臨時文件讀取(到當前的頁面顯示):include的方法,至關於直接拿這個方法來時用 63 include($lujing); 64 65 } 66 } 67 68
好比,這個類作好之後
有一個文件---------「test.php」
「test.php」這個頁面要使用類
新建了一個文件叫-----------test.php
這個文件要使用這個類了
<?php
//這個頁面要引用這個類了"Smarty.class.php"
include("Smarty.class.php");
//這個頁面訪問的是「test.php」,可是要顯示index.html,index.html裏面須要顯示一個變量$aa
//先造$smarty的對象
$smarty = new Smarty();
//前端就是:<div>{$aa}</div>,<div>裏面要顯示變量$aa的值
//在這個頁面就要註冊一個變量叫$aa
$smarty->assign("aa","12134");//smarty調用裏面的方法assign(變量名,變量的值)
//要顯示index.html頁面,要調用smarty裏面的display(路徑)方法
$smarty->display("index.html");
在main文件夾下建一個文件--------「test.php」
訪問「test.php」這個文件的話,須要使用smarty類
這個「test.php」文件,須要把smarty類引用
<?php
include("../libs/Smarty.class.php");//引用Smarty類
$smarty = new Smarty();//造對象
//能夠調用裏面的方法,註冊變量
//調用$smarty裏面的方法assign(變量名,變量值)註冊變量
$smarty->assign("aa","123");
//調用$smarty裏面的方法display(),去顯示模板
$smarty->display("../templates/tese.html");//調用這個「tese.html」模板來顯示
templates模板文件夾
在templates這個文件夾下新建了一個-------「test.php」
要顯示的是「test.html」這個模板
//這個displaya()方法還用到了一個臨時文件,這個臨時文件存放在什麼位置
這個文件夾是存放臨時文件的
還有一個緩存文件存放在
緩存文件存放在,cache文件夾裏面
總結:
在訪問咱們作「test.php」這個頁面的時候,
咱們須要作的幾個事情:
【1】 作好這個「test.php」頁面
【2】 作好模板
【3】 須要規定好臨時文件存放的目錄
【4】 還有一個格外的,緩存文件的目錄
【5】 代碼:
使用模板的話,須要用到不少文件夾,要對這些文件夾進行一個配置
配置好在用
建一個文件-------「init.inc.php」
他就是Smarty的配置文件。這個文件的位置能夠隨便放
<?php
define("ROOT",str_replace("\\","/",dirname(__FILE__)).'/'); //常量ROOT中指定項目根目錄
echo __FILE__;//獲取當前文件所在的位置
輸出的結果是:::::
echo dirname(__FILE__); // dirname(__FILE__); 這個文件所在的文件夾
輸出返回的結果:::::::
這個頁面,是訪問的頁面
顯示的結果:
例子:
顯示的結果::
臨時文件: