# Smarty模板引擎
## 自定義的一個Smarty引擎:
```
class Smarty{
public $arr;
function assign($key,$val){
$this->arr['$key'] = $val;
}
function dispaly($file){
$str = file_get_contents($file);
$ptn = '/\{\$(.+)\}/i';//向后引用(.+)
$rep = '<?php echo $this->arr[$1]?>';
$page = preg_replace($ptn,$rep,$str);
$filename = "tpls_c/".md5($file).".php";
file_put_contents($filename,$page);
include $filename;
}
}
$name = 'userlll';
$smarty = new Smarty();
$smarty->assign('name',$name);
$smarty->display('tpls/index.html');
```
## Smarty模板引擎工作原理
smarty是一個使用PHP寫出來的PHP模板引擎,它提供了邏輯與外在內容的分離,簡單來講,目的就是要使PHP同前端人員分離,使得程序員改變程序的邏輯內容不會影響到前端人員的頁面設計,前端人員重新修改頁面不會影響到程序的邏輯,這在許多人合作中的項目顯得尤為重要。
模版引擎是用于把模版文件和數據內容合并在一起的程序,便于網站開發有利于代碼分離和維護。
## Smarty模版引擎得安裝
1.到[官網](https://www.smarty.net/)去下載最新版得Smarty模版引擎
2.模版結構如下

我們只需要把libs拷到我們項目根目錄就可以了,其它得文件可以刪除,因為用不到
3.創建一些文件

紅色標注的文件夾都是新創建的
## Smarty模版引擎的基本配置
```
<?php
/**
* Created by PhpStorm.
* User: d
* Date: 2018/11/18
* Time: 9:54
*/
include("libs/Smarty.class.php");
$s = new Smarty();
$s->left_delimiter = "<{";//設置變量解析符,在頁面中使用,比如<{name}>就可以解析name變量
$s->right_delimiter = "}>";
$s->setTemplateDir("tpls");//設置存放模版文件的目錄
$s->setCompileDir("tpls_c");//設置存放編譯好的模版文件目的錄
$s->setConfigDir('conf');//設置存放配置文件的目錄
$s->setCacheDir("cc");//設置存放緩存文件的目錄
$s->caching = true;//設置開啟緩存
$s->assign("name",'user1');
$s->display('index.html');
開啟緩存之后,系統默認的緩存時間是一個小時,在緩存文件目錄中存放的是一個靜態緩存文件,除非模版文件發生變化不然的話會一直走模版文件,緩存的好處就是以后訪問除非模版發生變化,不然的話就會調用緩存文件,速度會很快。
```
- PHP操作集合
- 獲取字符首字母
- PHP實現定時備份MySQL數據庫
- PHP定時發送郵件
- PHP基本語法
- 總結
- 命名空間
- 錯誤抑制符
- 位運算符
- 原碼,反碼,補碼
- traits
- PHP的反射機制
- const和define的區別
- 語法
- 常用的函數
- 1.變量及打印函數
- 2.引入文件
- 3.常量
- 4.錯誤處理
- 5.面向對象
- 數據結構與算法
- 結構
- 數組
- 索引
- 散列表(哈希表)
- 棧
- 隊列
- 鏈表
- 算法
- 排序算法
- 插入排序
- 冒泡排序
- 選擇排序
- 歸并排序
- 快速排序
- 查找算法
- 二分查找
- 二分查找變形版本1:查詢數據在序列中第一次出現
- 哈希算法
- 算法復雜度
- Smarty模板引擎
- composer
- yaf
- yaf的安裝配置
- 其它
- Java
- JavaSE
- 1.Java發展及JDK安裝配置
- 2.Eclipse的下載及安裝
- 3.Java開發基礎
- 虛擬機
- 2.編輯虛擬機設置
- 1.虛擬機下安裝centos
- 3.安裝vmtools
- Linux
- 1.vi和vim編輯器
- 2.開機、重啟和用戶登錄注銷
- 3.用戶管理
- 4.用戶組管理
- 5.用戶和組的相關文件
- 6.linux運行級別
- 7.幫助指令
- 8.文件目錄類指令
- 9.時間日期類
- 10.搜索查找類
- 11.壓縮和解壓縮
- 12.組管理和權限管理(難點,重點)
- 虛擬主機的配置
- phpstudy快捷配置
- 配置文件配置
- PHP面向對象高級特性
- SPL標準庫(PHP標準庫)
- PHP鏈式操作的實現
- 面向對象編程的基本原則
- 設計模式
- 基本的設計模式