首頁 後端開發 php教程 smarty模板引擎基础知识入门_PHP

smarty模板引擎基础知识入门_PHP

May 31, 2016 am 11:45 AM
smarty 基礎知識 模板引擎

本文实例讲述了smarty模板引擎基础知识。分享给大家供大家参考。具体如下:

一、基本概念

1.什么是mvc?
mvc是一种开发模式,核心思想是:数据的输入、数据的处理、数据显示的强制分离。
2.什么是smarty?
smarty是一个php的模板引擎。更明确的来说,它可以帮助开发者更好的分离程序逻辑和页面显示。

3.smarty运行原理
模板文件,就是一个显示数据的模板,其中需要显示的数据用占位符代替。
smarty运行时,会读取模板文件,将模板文件中的占位符替换成真正的数据,并输出一个处理后的php文件,交由服务器运行。

二、自己写一个smarty模板

为了更好的理解smarty模板,现在自己先写一个自己的smarty模板-minismarty,让自己更加深入的了解smarty运行原理。

1.新建项目minismarty
新建模板文件路径:templates
新建模板文件被编译后的文件路径:templates_c
新建模板文件:intro.tpl
新建运行的文件:index.php
新建自己的smarty,即处理模板的文件:cls_MiniSmarty.php

2.编写index.php文件

<&#63;php 
  require_once './cls_MiniSmarty.php';
  $miniSmarty = new MiniSmarty();
  //传递数据
  $miniSmarty->assign("title","hello minismarty!");
  $miniSmarty->assign("content","<font color='red'>this is content!</font>");
  //传递数据到哪个页面显示
  $miniSmarty->display("intro.tpl");
&#63;>
登入後複製

3.编写intro.tpl文件

<!--这是个模板文件--> 
<html> 
<head> 
<meta http-equiv="Content-Language" content="en" />
<meta name="GENERATOR" content="PHPEclipse 1.0" />
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
<title>{$title}</title>
</head>
<body bgcolor="#FFFFFF" text="#000000" link="#FF9966" vlink="#FF9966" alink="#FFCC99">
{$content}
</body>
</html>
登入後複製

这里面的内容是用占位符的形式,smarty的作用就是将占位符的内容替换成真正的数据。
这样就可以实现模板文件和数据文件强制分离,通过smarty进行数据的传递。

4.编写cls_MiniSmarty.php文件

<&#63;php 
/** 
 * 
 * 原本是通过smarty模板引擎给模板提供数据的 
 * 现在自己模仿写一个模板,给模板提供数据的类 
 * smarty运行时,读取模板文件,将模板文件替换成可运行的php文件
 * 服务器真正运行的文件是处理后的文件
 */ 
class MiniSmarty { 
  //模板文件路径 
  var $template_dir = "./templates/"; 
  //模板文件被替换后的文件路径 
  var $templates_c_dir = "./templates_c/"; 
  //存放变量值 
  var $tpl_vars = array (); 
  //主要模拟2个方法 
  /** 
   * 添加数据 
   * 参数1:键 
   * 参数2:值,默认为null 
   */ 
  function assign($tpl_var, $var = null) { 
    if ($tpl_var != '') { 
      $this->tpl_vars[$tpl_var] = $var; //将数据添加到数组中 
    } 
  } 
  /** 
   * 显示数据 
   * 参数1:显示到哪个模板文件中 
   */ 
  function display($tpl_file) { 
    //获得模板文件的路径 
    $tpl_file_path = $this->template_dir . $tpl_file; 
    //获得模板文件被编译后的文件路径 
    $compile_file_path = $this->templates_c_dir . "com_" . $tpl_file . ".php"; 
    //判断文件是否存在 
    if (!file_exists($tpl_file_path)) { 
      return false; 
    } 
    //不用每次都生成编译文件,只有编译文件不存在或者模板文件被修改了才生成新的编译文件 
    //相当于缓存了编译文件 
    //filemtime函数:获得文件的生成时间 
    if (!file_exists($compile_file_path) || filemtime($tpl_file_path) > filemtime($compile_file_path)) { 
      //读取模板文件的内容 
      $fpl_file_content = file_get_contents($tpl_file_path); 
      $newStr = myReplace($fpl_file_content); 
      //将替换后的字符串生成新的文件,也就是编译后的文件 
      file_put_contents($compile_file_path, $newStr); 
    } 
    //引入编译后的文件 
    include $compile_file_path; 
  } 
  /** 
   * 对模板文件中的内容进行替换,获得新的字符串 
   */ 
  function myReplace($fpl_file_content) { 
    $pattern = array ( 
      '/\{\s*\$([a-zA-Z_][a-zA-Z0-9_]*)\s*\}/i' 
    ); 
    $replace = array ( 
      '<&#63;php echo $this->tpl_vars["${1}"] &#63;>' 
    ); 
    $newStr = preg_replace($pattern, $replace, $fpl_file_content); 
    return $newStr; 
  } 
} 
&#63;>
登入後複製

preg_replace方法介绍:
参数1:替换的规则
参数2:替换成的内容
参数3:替换操作的内容

5.运行结果

标题和内容都显示出来了:

结论:

真正运行的文件,既不是index.php,也不是intro.php,而是二者通过smarty作用后的文件:
com_intro.tpl.php。这个文件中数据来源于index.php,显示的布局来自intro.tpl,中间的桥梁是smarty。
smarty的作用是接受数据、填充数据(替换模板中的占位符)、并加载替换后的文件。

三、讲解smarty使用细节

1.如何配置smarty?

解压后,将libs文件夹拷贝到项目目录下即可,然后再创建2个文件夹templates和templates_c,分别放模板文件和模板编译后文件。

2.使用smarty注意事项

①替换变量的标示符。
因为默认的表示符是{}这个和style样式中的{}发生冲突,所以需要修改一下默认的标识符,一般修改为:{<>}
②修改标识符的方法。
方法一:直接修改smarty类源码:不推荐。
方法二:使用smarty提供的方法进行修改。

$smarty->left_delimiter="{<";
$smarty->right_delimiter=">}";
登入後複製

③smarty的一些基本配置

$smarty->template_dir="./templates";//模板路径
$smarty->compile_dir="./templates_c";//编译路径
$smarty->caching=false;  //是否使用缓存
$smarty->cache_dir="./smarty_cache";//如果使用缓存的话:缓存的路径
登入後複製

3.smarty模板技术分配变量的细节问题

一句话:可以分配php支持的各种数据。
php基本数据:int double string bool
复合数据类型:array object
特殊数据类型:resource null

希望本文所述对大家的php程序设计有所帮助。

本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn

熱AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover

AI Clothes Remover

用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool

Undress AI Tool

免費脫衣圖片

Clothoff.io

Clothoff.io

AI脫衣器

Video Face Swap

Video Face Swap

使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱工具

記事本++7.3.1

記事本++7.3.1

好用且免費的程式碼編輯器

SublimeText3漢化版

SublimeText3漢化版

中文版,非常好用

禪工作室 13.0.1

禪工作室 13.0.1

強大的PHP整合開發環境

Dreamweaver CS6

Dreamweaver CS6

視覺化網頁開發工具

SublimeText3 Mac版

SublimeText3 Mac版

神級程式碼編輯軟體(SublimeText3)

PHP程式設計有哪些常見的模板引擎? PHP程式設計有哪些常見的模板引擎? Jun 12, 2023 am 09:50 AM

最近幾年,PHP編程中的模板引擎已經成為了PHP開發的重要組成部分,方便了程式設計師進行頁面開發和管理。本文將介紹PHP程式設計中常見的模板引擎。 SmartySmarty是一個比較常用的PHP模板引擎,它支援快取模板、外掛模組和自訂函數等一系列功能。 Smarty的語法十分靈活,能夠解決PHP變數與HTML標記的結合難題,使得PHP語言更適用於模板化的設計。而且,S

如何在Fat-Free框架中使用模板引擎Blade? 如何在Fat-Free框架中使用模板引擎Blade? Jun 03, 2023 pm 08:40 PM

Fat-Free框架是一個輕量級的PHP框架,旨在提供簡單而靈活的工具來建立Web應用程式。它包含許多有用的功能,例如路由、資料庫存取、快取等。在Fat-Free框架中,使用Blade模板引擎可以幫助我們更方便地管理和渲染模板。 Blade是Laravel框架中的模板引擎,它提供了強大的語法和模板繼承功能。在本文中,我將示範如何在Fat-Free框架中使用Bl

ThinkPHP6模板引擎使用指南:打造精美的前端介面 ThinkPHP6模板引擎使用指南:打造精美的前端介面 Aug 26, 2023 pm 11:09 PM

ThinkPHP6模板引擎使用指南:打造精美的前端介面引言:隨著Web應用程式的發展,前端介面的設計和開發變得愈發重要。作為一個開發人員,我們需要使用一個強大的模板引擎來幫助我們創建和管理前端介面。 ThinkPHP6的模板引擎正是滿足這項需求的強大工具。本文將介紹如何使用ThinkPHP6模板引擎來打造精美的前端介面。第一部分:安裝ThinkPHP6範本引擎

學習使用Golang模板引擎:在Golang中使用模板的基礎指南 學習使用Golang模板引擎:在Golang中使用模板的基礎指南 Jan 20, 2024 am 10:13 AM

Golang模板引擎入門指南:如何在Golang中使用模板,需要具體程式碼範例簡介:模板引擎是一種能將資料和範本進行組合併產生HTML、文字或其他格式文件的工具。在Golang中,我們可以使用內建的模板包(html/template)來實現模板引擎的功能。本文將詳細介紹如何在Golang中使用模板引擎,並提供具體的程式碼範例。一、模板引擎的基本概念在了解如何使用

Go語言中的模板引擎:完整指南 Go語言中的模板引擎:完整指南 Jun 17, 2023 pm 12:55 PM

隨著網路科技的發展,Web應用程式的需求也不斷增加。 Web開發人員通常使用範本引擎來產生動態網頁。這篇文章將探討新的模板引擎:Go語言模板引擎。什麼是Go語言模板引擎? Go語言是由Google公司開發的先進的程式語言。它的語法簡潔明了,易於學習和使用。 Go語言模板引擎是Go語言中用來產生HTML模板的一種模板系統。 Go語言模板引擎被稱為"標準庫",

JavaScript開發中的模板引擎選擇與使用經驗分享 JavaScript開發中的模板引擎選擇與使用經驗分享 Nov 04, 2023 am 11:42 AM

JavaScript開發中的模板引擎選擇與使用經驗分享引言:在現代前端開發中,模板引擎(TemplateEngine)扮演著至關重要的角色。它們能夠使開發者更有效率地組織和管理大量的動態數據,並有效地將數據與介面展示分開。同時,選擇合適的模板引擎也能夠為開發者帶來更好的開發體驗和效能優化。然而,在眾多的JavaScript模板引擎中,該選擇哪一個呢?接

PHP和CGI的模板引擎:如何實現網站的可重複使用性 PHP和CGI的模板引擎:如何實現網站的可重複使用性 Jul 20, 2023 pm 10:13 PM

PHP和CGI的模板引擎:如何實現網站的可重複使用性引言:在開發網站時,我們經常需要處理動態內容的顯示。為了實現程式碼的可維護性和可重複使用性,使用模板引擎是一個明智的選擇。本文將介紹PHP和CGI兩種常用的模板引擎,並透過程式碼範例展示如何使用它們來實現網站的可重複使用性。一、PHP模板引擎PHP是廣泛使用的伺服器腳本語言,它具有靈活性和強大的功能。 PHP模板引擎是一

PHP中的最佳模板引擎 PHP中的最佳模板引擎 May 24, 2023 pm 04:01 PM

PHP是一種廣泛應用於Web開發的語言,無論是開發小型網站或大型系統,PHP都是非常流行且方便的。在PHP開發過程中,我們需要將邏輯和資料層分開離開來,這就需要使用到模板引擎。模板引擎可以簡單地理解為將資料和模板檔案合併,產生最終的HTML檔案。在這篇文章中,我們將介紹一些PHP中可用的最佳模板引擎。 SmartySmarty是PHP中最受歡迎的模板引擎之一,

See all articles