对比JAVA学习PHP系列:高级:PHP的模板引擎Smarty

#引入

假设不使用模板引擎,会有一个问题是,php代码和html代码混在一个文件中,而我们知道php是后台程序员做的,html属于前端开发人员的工作内容,如果杂糅在一起,一旦以后修改,导致的问题就是php程序员也要去看html,html前端需要去看php代码。耦合非常严重,怎么把表现层和逻辑层区分开就显得尤为重要了。

现在已经有了很多解决方案,几乎可以将网站的页面设计和php应用程序完全分离。这些解决方案成为模板引擎,它们正在逐步消除由于缺乏层次分离而代码的难题。

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

模板引擎的难点在于语法的掌握,不过对于程序员来说,这块不必过于关注,这些应该是前端的事情。

#Smarty简介

Smarty是一个使用PHP写出来的模板PHP模板引擎,是目前业界最著名的PHP模板引擎之一。它分离了逻辑代码和外在的内容,提供了一种易于管理和使用的方法,用来将原本与HTML代码混杂在一起PHP代码逻辑分离。简单的讲,目的就是要使用PHP程序员同美工分离,使用的程序员改变程序的逻辑内容不会影响到美工的页面设计,美工重新修改页面不会影响到程序的程序逻辑,这在多人合作的项目中显的尤为重要。

优点:

  1. 速度:采用smarty编写的程序可以获得最大速度的提高,这一点是相对于其它的模板引擎技术而言的。

  2. 编译型:采用smarty编写的程序在运行时要编译成一个非模板技术的PHP文件, 这个文件采用了PHP与HTML混合的方式,在下一次访问模板时将WEB请求直接转换到这个文件中, 而不再进行模板重新编译(在源程序没有改动的情况下)

  3. 缓存技术:smarty选用的一种缓存技术,它可以将用户最终看到的HTML文件缓存成一个静态的HTML页,
    当设定smarty的cache属性为true时, 在smarty设定的cachetime期内将用户的WEB请求直接转换到这个静态的HTML文件中来, 这相当于调用一个静态的HTML文件。

  4. 插件技术:smarty可以自定义插件。插件实际就是一些自定义的函数。

  5. 模板中可以使用if/elseif/else/endif。在模板文件使用判断语句可以非常方便的对模板进行格式重排。

不适合smarty的地方:

  1. 需要实时更新的内容。例如像股票显示,它需要经常对数据进行更新,这类型的程序使用smarty会使模板处理速度变慢。

  2. 小项目。小项目因为项目简单而美工与程序员兼于一人的项目,使用smarty会丧失php开发迅速的优点。

#为项目集成Smarty

1.解压下载的Smarty-2.6.25压缩包

2.拷贝libs文件夹到WEB程序目录下,我的目录为test\smarty

3.在安装完Smarty模板后,我们开始简单使用Smarty。

#我的第一个Smarty demo

在这里插入图片描述

test.htm

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

<body>
{*$content*}
</body>


</html>

init.inc.php

<?php
/**
 * Created by PhpStorm.
 * Date: 16/8/15
 * Time: 15:49
 */
require "libs/Smarty.class.php";

$smarty = new Smarty();
$smarty->template_dir = "templates";
$smarty->compile_dir = "templates_c";
$smarty->config_dir = "config";
$smarty->cache_dir = "cache";
$smarty->caching = true;
$smarty->left_delimiter = "{*";
$smarty->right_delimiter = "*}";

index.php

<?php
/**
 * Created by PhpStorm.
 * Date: 16/8/15
 * Time: 16:03
 */
require "init.inc.php";

$smarty->assign("title", "测试用的网页标题");
$smarty->assign("content", "测试用的网页内容");

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

?>

运行效果:

在这里插入图片描述

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值