Smary是用來將表現和內容相分離的框架php
smary的原理css
class Smarty{
private $tpl_var=array();
public function assign($k,$v){
$this->tpl_var[$k]=$v;
}
public function compile(){
$str=file_get_contents('./demo.html'); //將文件的內容轉換爲字符串
$str=str_replace('{','<?php echo $this->tpl_var["',$str); //將文件中全部的{ 轉換爲 <?php echo
$str=str_replace('}','"];?>',$str); //將文件中全部的} 轉換爲 ?>
file_put_contents('./demo.html.php',$str); //混編文件
require './demo.html.php';
}
}html
優化代碼數組
//若是混編文件存在,而且混編文件的修改時間大於模板修改時間,則直接引入。不然從新生成。緩存
file_exists($compile_path) && filemtime($compile_path) > filemtime($tpl_path)app
優化文件結構框架
//新建一個模板文件夾(view,template),和編譯文件夾(view_c,template_c),用來存放對應的文件ide
templates:默認存放模板文件夾oop
templates_c:默認存放混編文件的文件夾post
cache:存放緩存
configs:存放配置文件
註釋
{*這是註釋*}
Smarty註釋和HTML註釋的區別
聲明變量
一
require './Smarty/Smarty.class.php';
$smarty=new Smarty();
$smarty->assign('title','鋤禾');
二
{assign var = '變量名' value='值' }
取值
{$name}
保留變量
在Smarty中有一個特殊的變量「smarty」,這個變量是保留變量,用來訪問用戶請求的信息,系統環境變量,常亮,相似於PHP中的超全局變量。
在html中寫,css或js時
在{}中加 空格
smarty對數組的訪問
foreach
若是不存在遍歷的數組則執行{foreachelse}部分
判斷
{if 條件}
{elseif 條件}
{else}
{/if}
循環
只支持索引數組,不支持關聯數組。
{section name='自定義變量名' loop='被遍歷的數組'}
{數組['自定義變量名']}
{/section}
for循環
{for $i = 1 to 10}{/for}
while循環
{assign var= "i" value=1}
{while $i<10}
{/while}
值變量@iteration |
從1開始的序號 |
值變量@index |
從0開始的索引 |
值變量@first |
判斷是不是第一個元素 |
值變量@last |
判斷是否最後一個元素 |
值變量@total |
數組的長度 |
值變量@show |
數組是否爲空 |