Smarty:模板技術
實現功能:先後分離。
原理:主要經過Smarty核心類實現,調用display方法,將模板文件讀取,用正則進行替換,替換完保存到臨時文
件,將臨時文件加載到當前頁面。
配置文件(入口文件):對Smarty類進行實例化,設置文件的保存路徑
若是在頁面使用Smarty模板,須要將配置文件引入到當前頁面。
瀏覽器要訪問的頁面是後臺頁面(.php),最終在瀏覽器看到的頁面是模板頁面(.html或.tpl)
模板裏面的文件路徑:基於.php文件的相對路徑,若是不使用相對路徑能夠使用絕對路徑。
模板裏面顯示變量:
1.變量要寫在Smarty標記之間,變量名以$開頭
<{$test}>
2.支持全部類的數據,包括數組(關聯數組),對象
關聯數組在模板顯示的時候,除了能夠使用php語法以外,還支持點語法 <{$attr.name}>
模板裏面讀取配置文件
1.將配置文件加載到當前頁面
<{config_load file='test.conf'}>
2.讀取配置中的內容
<{#color#}>
3.若是配置文件中分了塊,怎麼讀某一塊的配置
<{config_load file='test.conf' section='塊名'}>
Smarty保留變量
$smarty.const 讀取常量 例如:CSS,JS,圖片的存放路口
變量調節器:
關鍵字:modifier
1.系統自帶的變量調節器:轉大寫 轉小寫 首字母大寫 截取字符串 拼接字符串
2.自定義變量調節器:
變量調節器存放目錄下新建文件:modifier.調節器名稱.php
在該文件裏面新建一個方法:function smarty_modifier_調節器名($str){}
$str參數表明調用該調節器的變量
最後該方法要有一個返回值
函數:
關鍵字:function普通函數,block塊函數
1.系統自帶的函數:if foreach
<{if 條件}>
知足條件輸出內容
<{else}>
不知足條件輸出內容
<{/if}>
<{if 條件1}>
知足條件輸出內容
<{elseif 條件2}>
不知足條件1知足條件2執行
<{/if}>
比較的時候,有備用詞能夠使用
<{foreach $shuzu as $v}>
$v@index 從0開始的索引
$v@first 表明是第一個循環的
$v@last 表明是最後一個循環的
<{/foreach}>
2.自定義函數
找到存放函數插件的文件夾在裏面新建文件:function.函數名.php (block.函數名.php)
在該文件裏面新建一個方法:function smarty_function_函數名($args){}
function smarty_block_函數名($args,$nr,$smarty,$bs){}
參數$args:調用該函數傳入的屬性關聯參數
參數$nr:block塊之間所夾的內容
參數$smarty:對象
參數$bs:是不是第一次調用(開始標記裏面調用)
該方法最終有返回值
模板繼承:
extends block
父模板:通常用來放網頁的頭和尾
須要預留必定的區域來讓子頁面修改替換
使用<{block name='neirong'}><{/block}>
通常來講,父模板裏面至少預留兩塊區域,其中一塊是在head裏面 另外一塊是在body裏面
子頁面:通常繼承父模板放該頁面實現的功能
<{extends file=''}>
完善替換父模板中預留的區域:
<{block name='neirong'}><{block}>
緩存:
作法:
1.定義一個緩存文件存放的路徑
2.判斷緩存文件是否存在或者是否過時
3.若是文件不存在或過時:
開啓內存緩存ob_start();
取內存中的內容ob_get_contents();
將內容存放到緩存文件中file_put_contents();
關閉內存緩存ob_flush();
4.若是文件存在或沒有過時:
將緩存文件引入當前頁面include();
php