jtahstu的博客

root@jtahstu.com   Github   英文博客  

最新碎语:以后没事写写小的知识点吧

您的位置:jtahstu的博客 >笔记> PHP Smarty模板引擎

PHP Smarty模板引擎

前言:概念上的东西就简单过一下,细节上的东西就不深究了。作下读书笔记,且该知识点是后续学习MVC框架的一部分。

1、什么是模板引擎

1.1、网站页面模板:即每个页面仅是一个板式,包括结构、样式和页面布局,是创建网页内容的样板,也可以理解为做好的网页框架。

目的是可以保持网页风格一致。

1.2、模板引擎:现在已经有很多解决方案,几乎可以将网站的页面设计和PHP应用程序完全分离,这些解决方案称为“模板引擎”。

    模板引擎的目的,就是要达到逻辑分离的功能。

1.3、模板引擎技术的核心比较简单。只要将美工页面(不包含任何PHP代码)指定为模板文件,并将这个模板文件中动态的内容,如数据库输出、用户交互等部分,定义成使用特殊“定界符”包含的“变量”,然后放在模板文件中相应的位置。当用户浏览时,由PHP脚本程序打开该模板文件,并将模板文件中定义的变量进行替换,这样,模板中的特殊变量被替换为不同的动态内容时,就会输出需要的页面。

2、自定义模板引擎

    Pass

3、选择Smarty模板引擎

    Smarty只是个应用程序中剥离表现层的工具,是一种从程序逻辑层(PHP)抽出外在(HTML/CSS)描述的PHP框架,即分开了逻辑程序和外在的内容,提供了一种易于管理的方法。

    Smarty的优点:

        ①速度      ②编译型            ③缓存技术

        ④插件技术  ⑤强大的表现逻辑    ⑥模板继承

4、安装Smarty及初始化配置

    4.1、安装Smarty

define("ROOT", str_replace("\\", "/",dirname(__FILE__)).'/');     //指定项目的根路径
require ROOT.'libs/Smarty.class.php';    //加载Smarty类文件         
$smarty = new Smarty();      //实例化Smarty类的对象$smarty

   4.2、初始化Smarty类库的默认设置

初始化Smarty成员属性的公用文件init.inc.php

<?php
 /**
  file: init.inc.php Smarty对象的实例化及初使化文件
 */
 define("ROOT", str_replace("\\", "/",dirname(__FILE__)).'/');  //指定项目的根路径
 require ROOT.'libs/Smarty.class.php';                          //加载Smarty类文件         
 $smarty = new Smarty();                           //实例化Smarty类的对象$smarty
/* 推荐使用Smarty3以上版本方式设置默认的路径,设置成功后都返回$smarty对象本身,可以使用连贯操作 */
    $smarty ->setTemplateDir(ROOT.'templates/')                    //设置所有模板文件存放的目录
  //  ->addTemplateDir(ROOT.'templates2/')          //可以添加多个模板目录(前后台各一个)
            ->setCompileDir(ROOT.'templates_c/')         //设置所有编译过的模板文件存放的目录
            ->setPluginsDir(ROOT.'plugins/')              //设置为模板扩充插件存放的目录
            ->setCacheDir(ROOT.'cache/')                  //设置缓存文件存放的目录
            ->setConfigDir(ROOT.'configs');               //设置模板配置文件存放的目录
 $smarty->caching = false;                             //设置Smarty缓存开关功能
 $smarty->cache_lifetime = 60*60*24;             //设置模板缓存有效时间段的长度为1天
 $smarty->left_delimiter = '<{';           //设置模板语言中的左结束符
 $smarty->right_delimiter = '}>';               //设置模板语言中的右结束符
?> 

4.3、第一个Smarty的简单示例

简单的Smarty设计模板(templates/test.htm)

<html>
 <head>
  <meta http-equiv="Content-type" content="text/html; charset=utf-8">
  <title> {$title} </title>
 </head>
 <body>
  {$content}
 </body>
</html>

在项目的主目录中创建index.php

<?php

/ 第一步:加载自定义的Smarty初使化文件 / require "init.inc.php";
/ 第二步:用assign()方法将变量置入模板里 /
$smarty->assign("title", "测试用的网页标题");
/ 也属于第二步,分配其他变量置入模板里,可以向模板中置入任何类型的变量 / $smarty->assign("content", "测试用的网页内容");

    /* 利用Smarty对象中的display()方法将网页输出  */                                         

$smarty->display("test.htm");
?>

5、Smarty的基本应用

    5.1、assign()方法

    void assign(string varname,mixed var)   //传递一对名称/数值对到模板中

    void assign(mixed var)           //传递包含名称/数值的关联数组到模板中使用

   5.2、display()方法

   void display(string template[,string cache_id[,stringcompile_id]])       //用来获取和显示Smarty模板

6、Smarty模板设计的基本语法

    6.1、注释

        {this is a comment }         //它不会在模板文件的最后输出中出现

6.2、变量

    $contact=array("1373758426","jtahstu","root@jtahstu.com","18010912924");

    $smarty->assign("contact",$contact);

    如下调用即可,{$contact[0]}

    还有其他的许多变量应用

    6.3、函数

    functionmyfun(){

        returndate("H:i:s");

    }

    调用

    {date("Y-m-d", time())}            //这个显示年月日

    {myfun()}                                //这个显示日期

    6.4、忽略Smarty解析

        ①在‘{’和‘}’大括号里包含空格

        ②将默认的定界符号修改一下

        ③使用内置的{literal}…{/literal}块函数

7、Smarty模板中的变量应用

    7.1、从配置文件中读取变量

        7.1.1、配置文件语法格式

pageTitle = "Main Menu"
bodyBgColor = #000000
tableBgColor = #000000
rowBgColor = #00ff00
[Customer]
pageTitle = "Customer Info"
[Login]
pageTitle = "Login"
focus = "username"
Intro = """This is a value that spans more
than one line. you must enclose
it in triple quotes."""   

7.1.2、加载配置文件

加载全局变量:{config_load file="foo.conf"}

                        {config_load "foo.conf"}  //smarty3简写形式

        加载局部变量:{config_loadfile="foo.conf" section="Login"} 

//加载foo.conf中Login节中的变量,全局变量也是引入了的

        7.1.3、在模板中引用配置文件中的变量

        ①{#pageTitle#}

        ②{$smarty.config.pageTitle}

    7.4、在模板中使用保留变量

        pass

8、Smarty模板中的变量调节器

    可以在模板中直接写变量调用,效果是一样的。

9、Smarty模板中自定义函数

    直接写函数调用即可。

10、Smarty模板中的内置函数

    这个嘛,比较复杂,在PHP中该怎么写还是怎么写,在自己写的函数中返回带html标签的字符串,在模板中调用函数。内置的函数使用起来比较麻烦,而且也记不住。

11、Smarty的模板继承特性

12、Smarty的缓存控制

设置

    $smarty->setCacheDir(ROOT.'cache/')            //设置缓存文件存放的目录

    $smarty->caching= false;                     //设置Smarty缓存开关功能

    $smarty->cache_lifetime= 606024;   //设置模板缓存有效时间段的长度为1天

删除

    $smarty->clearAllCache();   //清除所有缓存

   $smarty->clearCache("test.html");   //清除某一模板的缓存

排版太丑的话,请看pdf版 PHP Smarty模板引擎

---  作者jtahstu写于2016年2月8日和9日(大年初二)的六安老家

---

本文章采用 知识共享署名2.5中国大陆许可协议 进行许可,欢迎转载,演绎或用于商业目的。

---

二维码加载中...

扫一扫移动端访问O(∩_∩)O

发表评论

55 + 55 =
路人甲 表情
看不清楚?点图切换 Ctrl+Enter快速提交
正在加载中……