Smarty模板引擎

今天講的是Smarty:
   一、   Smarty是使用PHP寫出來的模板引擎,實現了後臺邏輯(*.php)和外在內容(前臺頁面)分離,將php程序員和美工設計人員進行分離。應用Smarty的網站程序邏輯的改變不會影響美工頁面的設計,美工設計從新修改之後不會影響到程序邏輯。
     1.優點:在比較大的項目中才得以體現:當後數據沒有變化的時候,只需一次編譯,只有當後臺數據發生變時,頁面才需要重新編譯。(運行速度快,緩存技術(catch),函數(插件)豐富)
     2.不適合使用的地方:小項目、數據需要時時更新(股市行情)
二、Smarty的安裝
安裝類似於ecshop。
只需要將libs文件夾拷貝到服務器目錄下即可。
templates:存放頁面模板,路徑任意。
templates_c:存放編譯之後的頁面模板。(在後臺數據部發生變化時,打開網站調用的是編譯之後的模板。裏面的文件系統自動生成)
configs:模板所需要的特殊的配置文件
cache:存放Smarty緩存內的模板(臨時)
三、應用Smarty
1.引入Smarty.class.php的文件
2.創建Smarty對象
3.更改模板存放路徑及編譯路徑(templates_dir  compile_dir)
4.修改界定符(left_delimiter  right_delimiter)
5.編寫模板(*.tpl(就是html))裏面的數據部分用Smarty變量表示
6.在php文件中用assign方法給模板中的變量賦值
7.在php文件中用display方法將模板及數據顯示。
四、Smarty中的變量
1.模板中變量的聲明
一般變量:<{$name}>
數組變量:索引數組和關聯數組
 索引數組:<{$arrName[row][col]}>
 關聯數組:<{$arrName.key1.key2}>
對象變量:<{$obj->att}>
 <{$obj->fun()}>
2.給模板分配變量(通過php給模板中的變量賦值)
通過assign方法

五、實例
test.php

<?php
$address = array('北京','天津','河北');
$birthday = array("year"=>'1990',"month"=>'12',"day"=>array('1',"星期一"));
class Stu{
 var $name;
 var $sex;
 var $age;
function study(){
 echo "好好學習,天天向上!";
 }
 }
$stu1 = new Stu;
$stu1->name="張三";
$stu1->age=19;
$stu1->sex='女';

include("libs/Smarty.class.php");
$smarty = new Smarty();
$smarty->template_dir = "demo/templates";
$smarty->compile_dir = "demo/templates_c";
$smarty->left_delimiter = "<{";
$smarty->right_delimiter = "}>";
$smarty->assign("name","李四");
$smarty->assign("arr",$address);
$smarty->assign("birthday",$birthday);
$smarty->assign("student",$stu1);
$smarty->display("test.tpl");
?>

test.tpl  模板文件
我是<{$name}>!<br>
歸屬地:
<select>
<option><{$arr[0]}></option>
<option><{$arr[1]}></option>
<option><{$arr[2]}></option>
</select><br>
出生年月:
<{$birthday.year}>年<{$birthday.month}>月<{$birthday.day[0]}>日&nbsp;&nbsp;<{$birthday.day[1]}>
<br>
我是<{$student->name}>,<{$student->sex}>,
年齡<{$student->age}><br>
我的宣言是<{$student->study()}>


 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章