Inhaltsverzeichnis
smarty模板引擎基础知识入门,smarty模板基础知识
Heim Backend-Entwicklung PHP-Tutorial smarty模板引擎基础知识入门,smarty模板基础知识_PHP教程

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

Jul 13, 2016 am 09:59 AM
smarty 模板引擎

smarty模板引擎基础知识入门,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;>
Nach dem Login kopieren

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>
Nach dem Login kopieren

这里面的内容是用占位符的形式,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;>
Nach dem Login kopieren

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=">}";
Nach dem Login kopieren

③smarty的一些基本配置

$smarty->template_dir="./templates";//模板路径
$smarty->compile_dir="./templates_c";//编译路径
$smarty->caching=false;  //是否使用缓存
$smarty->cache_dir="./smarty_cache";//如果使用缓存的话:缓存的路径
Nach dem Login kopieren

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

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

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

www.bkjia.comtruehttp://www.bkjia.com/PHPjc/976034.htmlTechArticlesmarty模板引擎基础知识入门,smarty模板基础知识 本文实例讲述了smarty模板引擎基础知识。分享给大家供大家参考。具体如下: 一、基本概...
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn

Heiße KI -Werkzeuge

Undresser.AI Undress

Undresser.AI Undress

KI-gestützte App zum Erstellen realistischer Aktfotos

AI Clothes Remover

AI Clothes Remover

Online-KI-Tool zum Entfernen von Kleidung aus Fotos.

Undress AI Tool

Undress AI Tool

Ausziehbilder kostenlos

Clothoff.io

Clothoff.io

KI-Kleiderentferner

AI Hentai Generator

AI Hentai Generator

Erstellen Sie kostenlos Ai Hentai.

Heißer Artikel

R.E.P.O. Energiekristalle erklärten und was sie tun (gelber Kristall)
2 Wochen vor By 尊渡假赌尊渡假赌尊渡假赌
Repo: Wie man Teamkollegen wiederbelebt
4 Wochen vor By 尊渡假赌尊渡假赌尊渡假赌
Hello Kitty Island Abenteuer: Wie man riesige Samen bekommt
4 Wochen vor By 尊渡假赌尊渡假赌尊渡假赌

Heiße Werkzeuge

Notepad++7.3.1

Notepad++7.3.1

Einfach zu bedienender und kostenloser Code-Editor

SublimeText3 chinesische Version

SublimeText3 chinesische Version

Chinesische Version, sehr einfach zu bedienen

Senden Sie Studio 13.0.1

Senden Sie Studio 13.0.1

Leistungsstarke integrierte PHP-Entwicklungsumgebung

Dreamweaver CS6

Dreamweaver CS6

Visuelle Webentwicklungstools

SublimeText3 Mac-Version

SublimeText3 Mac-Version

Codebearbeitungssoftware auf Gottesniveau (SublimeText3)

Was sind die gängigen Template-Engines in der PHP-Programmierung? Was sind die gängigen Template-Engines in der PHP-Programmierung? Jun 12, 2023 am 09:50 AM

In den letzten Jahren hat sich die Template-Engine in der PHP-Programmierung zu einem wichtigen Bestandteil der PHP-Entwicklung entwickelt und erleichtert Programmierern die Entwicklung und Verwaltung von Seiten. In diesem Artikel werden gängige Template-Engines in der PHP-Programmierung vorgestellt. SmartySmarty ist eine häufig verwendete PHP-Vorlagen-Engine. Sie unterstützt eine Reihe von Funktionen wie zwischengespeicherte Vorlagen, Plug-in-Module und benutzerdefinierte Funktionen. Die Syntax von Smarty ist sehr flexibel und kann das Problem der Kombination von PHP-Variablen mit HTML-Tags lösen, wodurch die PHP-Sprache besser für Vorlagendesign geeignet wird. Darüber hinaus hat S

Erfahren Sie, wie Sie die Golang-Vorlagen-Engine verwenden: Eine grundlegende Anleitung zur Verwendung von Vorlagen in Golang Erfahren Sie, wie Sie die Golang-Vorlagen-Engine verwenden: Eine grundlegende Anleitung zur Verwendung von Vorlagen in Golang Jan 20, 2024 am 10:13 AM

Erste Schritte mit der Golang Template Engine: So verwenden Sie Vorlagen in Golang. Es sind spezifische Codebeispiele erforderlich. Einführung: Eine Template Engine ist ein Tool, das Daten und Vorlagen kombinieren und Dokumente in HTML, Text oder anderen Formaten generieren kann. In Golang können wir das integrierte Vorlagenpaket (html/template) verwenden, um die Funktionen der Template-Engine zu implementieren. In diesem Artikel wird die Verwendung der Template-Engine in Golang im Detail vorgestellt und spezifische Codebeispiele bereitgestellt. 1. Das Grundkonzept der Template-Engine besteht darin, zu verstehen, wie man sie verwendet.

Nutzungsanleitung für die ThinkPHP6-Template-Engine: Erstellen Sie eine exquisite Front-End-Schnittstelle Nutzungsanleitung für die ThinkPHP6-Template-Engine: Erstellen Sie eine exquisite Front-End-Schnittstelle Aug 26, 2023 pm 11:09 PM

Anleitung zur Verwendung der ThinkPHP6-Template-Engine: Erstellen Sie eine exquisite Front-End-Schnittstelle. Einführung: Mit der Entwicklung von Webanwendungen sind das Design und die Entwicklung von Front-End-Schnittstellen immer wichtiger geworden. Als Entwickler müssen wir eine leistungsstarke Template-Engine verwenden, die uns bei der Erstellung und Verwaltung von Front-End-Schnittstellen unterstützt. Die Template-Engine von ThinkPHP6 ist ein leistungsstarkes Tool, um diesen Bedarf zu decken. In diesem Artikel wird erläutert, wie Sie mit der ThinkPHP6-Vorlagen-Engine eine schöne Front-End-Schnittstelle erstellen. Teil 1: Installieren Sie die ThinkPHP6-Vorlagen-Engine

Wie verwende ich die Template-Engine Blade im Fat-Free-Framework? Wie verwende ich die Template-Engine Blade im Fat-Free-Framework? Jun 03, 2023 pm 08:40 PM

Fat-Free Framework ist ein leichtes PHP-Framework, das einfache und flexible Tools zum Erstellen von Webanwendungen bereitstellt. Es enthält viele nützliche Funktionen wie Routing, Datenbankzugriff, Caching usw. Im Fat-Free-Framework kann uns die Verwendung der Blade-Vorlagen-Engine dabei helfen, Vorlagen bequemer zu verwalten und zu rendern. Blade ist die Template-Engine im Laravel-Framework, die leistungsstarke Syntax- und Template-Vererbungsfunktionen bietet. In diesem Artikel werde ich zeigen, wie man Bl im Fat-Free-Framework verwendet

Template Engine in Go: Eine vollständige Anleitung Template Engine in Go: Eine vollständige Anleitung Jun 17, 2023 pm 12:55 PM

Mit der Entwicklung der Internettechnologie steigt auch die Nachfrage nach Webanwendungen. Webentwickler verwenden häufig Template-Engines, um dynamische Webseiten zu generieren. In diesem Artikel wird eine neue Vorlagen-Engine untersucht: die Go-Sprachvorlagen-Engine. Was ist die Go-Sprachvorlagen-Engine? Go Language ist eine von Google entwickelte fortgeschrittene Programmiersprache. Die Syntax ist prägnant und klar, sodass sie leicht zu erlernen und zu verwenden ist. Die Go-Sprachvorlagen-Engine ist ein Vorlagensystem, das zum Generieren von HTML-Vorlagen in der Go-Sprache verwendet wird. Die Go-Sprachvorlagen-Engine wird als „Standardbibliothek“ bezeichnet.

Beste Template-Engine in PHP Beste Template-Engine in PHP May 24, 2023 pm 04:01 PM

PHP ist eine in der Webentwicklung weit verbreitete Sprache. Egal, ob Sie eine kleine Website oder ein großes System entwickeln, PHP ist sehr beliebt und praktisch. Im PHP-Entwicklungsprozess müssen wir die Logik- und Datenebene trennen, was den Einsatz einer Template-Engine erfordert. Die Template-Engine kann einfach so verstanden werden, dass sie Daten und Template-Dateien zusammenführt, um die endgültige HTML-Datei zu generieren. In diesem Artikel stellen wir einige der besten in PHP verfügbaren Template-Engines vor. SmartySmarty ist eine der beliebtesten Template-Engines in PHP,

So verwenden Sie PHP und Smarty, um eine Front-End- und Back-End-Trennentwicklung zu erreichen So verwenden Sie PHP und Smarty, um eine Front-End- und Back-End-Trennentwicklung zu erreichen Jun 25, 2023 pm 01:46 PM

In der modernen Webentwicklung ist die Trennung von Front-End und Back-End zu einem sehr beliebten Trend geworden, der es Entwicklern ermöglicht, Projekte besser zu organisieren und die Effizienz der Projektentwicklung zu verbessern. PHP und Smarty sind zwei sehr häufig verwendete Technologien, mit denen eine Front-End- und Back-End-Trennungsentwicklung erreicht werden kann. In diesem Artikel wird erläutert, wie Sie mit PHP und Smarty eine Front-End- und Back-End-Trennungsentwicklung erreichen. Was ist Front-End- und Back-End-Trennung? Bei der traditionellen Webentwicklung ist das Front-End hauptsächlich für die Darstellung der Seite und die Logik der Interaktion mit dem Back-End verantwortlich. Das Backend ist hauptsächlich für das Geschäft verantwortlich

Eine vorläufige Studie zu Smarty, der Template-Engine in PHP Eine vorläufige Studie zu Smarty, der Template-Engine in PHP May 11, 2023 pm 05:15 PM

Heutzutage ist die Website-Entwicklung untrennbar mit einer wichtigen Komponenten-Template-Engine verbunden. Eine Template-Engine bezieht sich auf ein Tool, das Seitenvorlagen und Daten kombiniert, um HTML-Code mit einem bestimmten Format zu generieren. In verschiedenen Website-Entwicklungsframeworks ist die Template-Engine eine wesentliche Komponente, da die Template-Engine die Duplizierung von Code erheblich reduzieren und die Dynamik der Seite verbessern kann. Eine der gebräuchlichsten und beliebtesten Template-Engines ist Smarty. Smarty ist ein DSL (DomainSpecif

See all articles