婷婷综合国产,91蜜桃婷婷狠狠久久综合9色 ,九九九九九精品,国产综合av

主頁 > 知識庫 > php tpl模板引擎定義與使用示例

php tpl模板引擎定義與使用示例

熱門標簽:哪里辦理400電話 長春人工外呼系統服務商 江西手機自動外呼防封系統是什么 仁和怎么申請400開頭的電話 怎么向銷售公司推銷外呼系統 高德地圖標注家 外呼系統撥打暫時無法接通 廣東地市地圖標注 廣州防封卡外呼系統多少錢一個月

本文實例講述了php tpl模板引擎定義與使用。分享給大家供大家參考,具體如下:

tpl.php

?php
namespace tpl;
/**
* Class Tpl
*/
class Tpl
{
  protected $view_dir;//模板文件
  protected $cache_dir;//緩存文件
  protected $lifetime;//過期時間
  protected $vars = [];//存放顯示變量的數組
   /**
   * Tpl constructor.
   * @param string $view_dir
   * @param string $cache_dir
   * @param string $lifetime
   */
  public function __construct($view_dir='', $cache_dir='', $lifetime='')
  {
    //如果模板文件不為空,則設置,為空則為默認值
    if (!empty($view_dir)) {
      if ($this->check_dir($view_dir)) {
        $this->view_dir = $view_dir;
      }
    }
    //如果緩存文件不為空,則設置,為空時為默認值
    if (!empty($cache_dir)) {
      if ($this->check_dir($cache_dir)) {
        $this->cache_dir = $cache_dir;
      }
    }
    //如果過期時間不為空,則設置,為空時為默認值
    if (!empty($lifetime)) {
      $this->lifetime = $lifetime;
    }
  }
   /**
   * 對外公開的方法
   * @param string $name
   * @param string $value
   */
  public function assign($name, $value)
  {
    $this->vars[$name] = $value;//將傳入的參數以鍵值對存入數組中
  }
   /**
   * 測試文件
   * @param $dir_path
   * @return bool
   */
  protected function check_dir($dir_path)
  {
    //如果文件不存在或不是文件夾,則創建
    if (!file_exists($dir_path) || !is_dir($dir_path)) {
      return mkdir($dir_path, 0777, true);
    }
    //如果文件不可讀或不可寫,則設置模式
    if (!is_writable($dir_path) || !is_readable($dir_path)) {
      return chmod($dir_path, 0777);
    }
    return true;
  }
   /**
   * 展示方法
   * @param $view_name
   * @param bool $isInclude
   * @param null $uri
   */
  public function display($view_name, $isInclude=true, $uri=null)
  {
    //通過傳入的文件名,得到模板文件路徑
    $view_path = rtrim($this->view_dir, '/') . '/' . $view_name;
    //判斷路徑是否存在
    if (!file_exists($view_path)) {
      die('文件不存在');
    }
    //通過傳入的文件名得到緩存文件名
    $cache_name = md5($view_name . $uri) . '.php';
    //緩過緩存文件名得到緩存路徑
    $cache_path = rtrim($this->cache_dir, '/') . '/' .$cache_name;
    //判斷緩存文件是否存在,如果不存在,重新生成
    if (!file_exists($cache_path)) {
      $php = $this->compile($view_path);//解析模板文件
      file_put_contents($cache_path, $php);//緩存文件重新生成
    } else {
      //如果緩存文件存在,判斷是否過期,判斷模板文件是否被修改
      $is_time_out = (filectime($cache_path) + $this->lifetime) > time() ? false : true;
      $is_change = filemtime($view_path) > filemtime($cache_path) ? true : false;
      //如果緩存文件過期或模板文件被修改,重新生成緩存文件
      if ($is_time_out || $is_change) {
        $php = $this->compile($view_path);
        file_put_contents($cache_path, $php);
      }
    }
    if ($isInclude) {
      extract($this->vars);//解析傳入變量的數組
      include $cache_path;//展示緩存
    }
  }
   /**
   * 正則解析模板文件
   * @param string $file_name
   * @return mixed|string
   */
  protected function compile($file_name)
  {
    $html = file_get_contents($file_name);//獲取模板文件
    //正則轉換數組
    $array = [
      '{$%%}' => '?=$\1?>',
      '{foreach %%}' => '?php foreach (\1): ?>',
      '{/foreach}' => '?php endforeach ?>',
      '{include %%}' => '',
      '{if %%}' => '?php if (\1): ?>',
      '{/if}' => '?php endif ?>',
      '{for %%}' => '?php for (\1): ?>',
      '{/for}' => '?php endfor ?>',
      '{switch %%}' => '?php switch (\1) ?>',
      '{/switch}' => '?php endswitch ?>'
    ];
    //遍歷數組,生成正則表達式
    foreach ($array AS $key=>$value) {
      //正則表達式,
      $pattern = '#' . str_replace('%%', '(.+?)' , preg_quote($key, '#')) . '#';
      if (strstr($pattern, 'include')) {
        $html = preg_replace_callback($pattern, [$this, 'parseInclude'], $html);
      } else {
        $html = preg_replace($pattern, $value, $html);
      }
    }
    return $html;
  }
   /**
   * 處理include表達式
   * @param array $data
   * @return string
   */
  protected function parseInclude($data)
  {
    $file_name = trim($data[1], '\'"');
    $this->display($file_name, false);
    $cache_name = md5($file_name) . '.php';
    $cache_path = rtrim($this->cache_dir, '/') . '/' . $cache_name;
    return '?php include "'.$cache_path.'" ?>';
  }
}

user_tpl,,,,從數據庫中取值,作為參數傳到模板文件,再解析模板文件

?php
include './sql/pdo.sql.php';
include 'tpl.php';
 $tpl = new tpl\Tpl('./view/', './cache/', 3000);
$link = new pdo_sql();
$dat = ['menu_name', 'menu_url'];
$res = $link->table('blog_menu')->field($dat)->order('id ASC')->select();
$tpl->assign('menu', $res);
$tpl->display('index.html');

更多關于PHP相關內容感興趣的讀者可查看本站專題:《PHP模板技術總結》、《PHP基于pdo操作數據庫技巧總結》、《PHP運算與運算符用法總結》、《PHP網絡編程技巧總結》、《PHP基本語法入門教程》、《php面向對象程序設計入門教程》、《php字符串(string)用法總結》、《php+mysql數據庫操作入門教程》及《php常見數據庫操作技巧匯總》

希望本文所述對大家PHP程序設計有所幫助。

您可能感興趣的文章:
  • ThinkPHP使用smarty模板引擎的方法
  • 需要使用php模板的朋友必看的很多個頂級PHP模板引擎比較分析
  • PHP模板引擎Smarty的緩存使用總結
  • PHP原生模板引擎 最簡單的模板引擎
  • php模板引擎技術簡單實現
  • PHP中MVC模式的模板引擎開發經驗分享
  • 在Yii框架中使用PHP模板引擎Twig的例子
  • 簡單的自定義php模板引擎
  • PHP模板引擎Smarty中變量的使用方法示例
  • TMDPHP 模板引擎使用教程
  • Pain 全世界最小最簡單的PHP模板引擎 (普通版)

標簽:黔東 惠州 梅河口 海北 文山 濮陽 廈門 湘西

巨人網絡通訊聲明:本文標題《php tpl模板引擎定義與使用示例》,本文關鍵詞  php,tpl,模板,引擎,定義,與,;如發現本文內容存在版權問題,煩請提供相關信息告之我們,我們將及時溝通與處理。本站內容系統采集于網絡,涉及言論、版權與本站無關。
  • 相關文章
  • 下面列出與本文章《php tpl模板引擎定義與使用示例》相關的同類信息!
  • 本頁收集關于php tpl模板引擎定義與使用示例的相關信息資訊供網民參考!
  • 推薦文章
    婷婷综合国产,91蜜桃婷婷狠狠久久综合9色 ,九九九九九精品,国产综合av
    亚洲日本青草视频在线怡红院| 亚洲人精品午夜| 丁香六月综合激情| 国产成人av电影在线| 日韩欧美视频在线| 久久99国产精品成人| 国产三级精品三级在线专区| 亚洲蜜臀av乱码久久精品蜜桃| 精品亚洲成a人在线观看 | 亚洲综合区在线| 国产91精品欧美| 欧美大尺度电影在线| 色噜噜狠狠色综合中国| 亚洲国产成人高清精品| 日日噜噜夜夜狠狠视频欧美人| 日韩中文字幕区一区有砖一区| 色噜噜狠狠成人中文综合 | 色88888久久久久久影院野外 | 亚洲一区二区欧美激情| 成人一级片在线观看| 国产精品久久久久久久久快鸭| 亚洲午夜精品17c| 不卡一区二区中文字幕| 国产成人亚洲综合a∨婷婷图片| 91精品欧美一区二区三区综合在| 日韩二区在线观看| 精品裸体舞一区二区三区| 国产高清无密码一区二区三区| 国产精品三级久久久久三级| 欧洲亚洲精品在线| 国产麻豆成人精品| 国产精品一卡二卡在线观看| 亚洲国产中文字幕在线视频综合| 国产视频一区在线观看| 91精品国产福利| 欧洲人成人精品| 91在线视频网址| 国产精品一区三区| 久久er精品视频| 日韩制服丝袜av| 亚洲va欧美va天堂v国产综合| 国产精品色婷婷| 中文字幕av一区二区三区高| 欧美一区二视频| 欧美日韩国产综合久久| 色综合久久综合网97色综合| 成人激情校园春色| 99re热这里只有精品免费视频| 国产制服丝袜一区| 另类调教123区 | 美女在线视频一区| 日韩国产精品91| 色综合天天狠狠| 色噜噜狠狠色综合中国| 午夜一区二区三区在线观看| 国产精品久久久久影院老司| 久久99久久99小草精品免视看| 丝瓜av网站精品一区二区| 欧美酷刑日本凌虐凌虐| 亚洲欧洲日韩在线| 欧美另类videos死尸| 一级做a爱片久久| 日韩欧美你懂的| 国产成人a级片| 亚洲国产精品一区二区www | 国产在线视频精品一区| 午夜精品爽啪视频| 国产专区欧美精品| av亚洲精华国产精华精华| 欧美在线观看视频一区二区| 7777精品伊人久久久大香线蕉完整版| 欧美一区三区四区| 一区二区三区免费| 国产综合久久久久影院| 亚洲18色成人| 日韩免费观看2025年上映的电影| 欧美日韩亚洲综合| 2023国产精华国产精品| 亚洲国产日日夜夜| 99国产欧美久久久精品| 国产欧美精品一区二区色综合 | 欧美一区二区三区不卡| 亚洲女性喷水在线观看一区| 麻豆精品一区二区综合av| 69堂成人精品免费视频| 日韩一区精品视频| 欧美精品久久久久久久久老牛影院| 国产精品久久久久久久久免费相片| 久久99国产乱子伦精品免费| 日韩视频123| 国产制服丝袜一区| 精品国产免费人成在线观看| 久久精品国产免费看久久精品| 日韩色在线观看| 国产.欧美.日韩| 亚洲午夜电影在线观看| 337p亚洲精品色噜噜噜| 蜜桃一区二区三区四区| 日本一区二区高清| 欧美三级在线看| 久久99久久精品欧美| 亚洲欧洲www| 欧美xxxxxxxxx| 色94色欧美sute亚洲线路一ni| 亚洲777理论| 综合久久给合久久狠狠狠97色| 91国在线观看| 成人免费毛片片v| 国产精品成人网| 久久综合九色综合久久久精品综合| 国产999精品久久久久久绿帽| 亚洲成人先锋电影| 亚洲黄色免费网站| 亚洲欧美一区二区在线观看| 久久亚区不卡日本| 精品嫩草影院久久| 26uuu另类欧美| 2021中文字幕一区亚洲| 91麻豆精品国产91久久久久久| 在线观看免费视频综合| 欧美自拍偷拍一区| 欧美在线free| 欧美放荡的少妇| 精品黑人一区二区三区久久| 欧美成人性战久久| 国产精品久久久久aaaa樱花| 国产精品剧情在线亚洲| 国产精品无圣光一区二区| 中日韩免费视频中文字幕| 国产欧美一区二区三区在线看蜜臀| 久久久91精品国产一区二区精品| 国产精品午夜在线观看| 一区二区三区在线免费视频| 日韩av网站免费在线| 国产麻豆一精品一av一免费| 国产ts人妖一区二区| 91麻豆精品国产自产在线观看一区 | 亚洲一区二区av在线| 亚洲国产综合91精品麻豆| 日本不卡高清视频| 91天堂素人约啪| 精品久久五月天| 一级精品视频在线观看宜春院| 亚洲18女电影在线观看| 国产精品性做久久久久久| 欧美午夜精品电影| 欧美激情一区二区| 美腿丝袜亚洲综合| 国产精品久久久久久久蜜臀| 亚洲欧美日韩国产成人精品影院| 日本不卡不码高清免费观看| 91视频观看视频| 亚洲精品一区在线观看| 水蜜桃久久夜色精品一区的特点 | 日韩中文字幕亚洲一区二区va在线| 国产剧情一区二区| 精品欧美黑人一区二区三区| 一区二区高清免费观看影视大全 | 一区二区三区久久| 国产 日韩 欧美大片| 91精品国产乱码| 亚洲va天堂va国产va久| 色婷婷亚洲精品| 中文字幕精品一区二区三区精品| 国内久久婷婷综合| 久久亚洲精华国产精华液| 五月天亚洲精品| 2024国产精品| 大白屁股一区二区视频| 国产欧美一区二区三区在线看蜜臀| 国内精品国产成人| 自拍偷拍亚洲激情| 欧美蜜桃一区二区三区| 美女看a上一区| 亚洲精品v日韩精品| 日韩欧美电影一二三| 国产精品一区二区果冻传媒| 中文字幕一区二| 欧美日本乱大交xxxxx| 精品综合免费视频观看| 欧美国产日韩亚洲一区| 色噜噜狠狠一区二区三区果冻| 亚洲乱码国产乱码精品精的特点 | 日韩一区中文字幕| 在线观看欧美日本| 成人免费不卡视频| 在线精品亚洲一区二区不卡| 亚洲国产视频一区| 自拍偷拍国产精品| 亚洲尤物视频在线| 国产日韩精品视频一区| 欧美在线你懂的| 国产精品1区二区.| 日韩一区国产二区欧美三区| 色综合久久久久久久久久久| 三级一区在线视频先锋| 亚洲午夜羞羞片| 亚洲精品视频在线看| 中文字幕一区二| 中文字幕乱码亚洲精品一区|