Smarty不是一种像ThinkPHP那样的大型框架,只是一个php类库,说白了就是一个写满了函数、类供调用的php文件,类似于jar包。其作用很简单,所谓的模板引擎,就是将一些php语句转化为诸如jstl等c标签表达式的{$xx}取值等,以致于避免php与html混写的情况。部分php公司招工明确规定要会Smarty,看起来好像很高大上的样子,其实是妖魔化了,其下载、配置与使用简单得很,下面就来说明这个问题。

一、Smarty的下载、配置

1、首先到Smarty的官网:http://www.smarty.net/(点击打开链接)如下图,下载最新版的Smarty,貌似已经近1年没有更新了,这是好事。

2、下载之后解压,将里面的libs文件家拖入你的站点目录。

3、之后,在站点文件中新建3个空文件夹,如下图所示,caches与compiles是用来存放Smarty运行的缓存与编译文件的,加快用户访问速度。

templates是用来存放我们自己编写的html文件的。

Smarty.inc.php是我们自己编写的php文件,用作Smarty的核心文件,以后的php文件如果用到Smarty特性都要引用这个文件。Smarty.inc.php的代码如下:

<?php
//首先包含Smarty类文件
include_once('/libs/Smarty.class.php');
//实例化Smarty类文件
$smarty=new Smarty();
$smarty->cache_dir="caches";//缓存文件夹可选为减轻压力
$smarty->caching=false;//关闭缓存,调试中建议关闭,默认为关闭,在实际运行的时候请打开,减轻服务器压力
$smarty->template_dir="templates";//设置模版目录
$smarty->compile_dir="compiles";//设置编译目录必选
?>

如上代码所示,这个php指明了缓存目录是当前目录下的caches文件夹,相应的模板目录是templates,编译目录是compiles,这样写就好,前面不要有/,否则会出现Unable to load template file 'xx.htm'的错误。

二、Smarty的Helloworld

之后的Smarty的Helloworld很简单,如下图,先在templates目录下新建的一个helloworld.html,之后在最外层目录新建一个helloworld.php

1、helloworld.html的代码如下,很简单的,注意到下面的{$name}是即将被smarty替换掉的部分,形成echo $name;的效果

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head><meta http-equiv="Content-Type" content="text/html; charset=utf-8" /><title>Helloworld</title>
</head><body><p>hello,{$name}</p>
</body>
</html>

这个文件与根目录的helloworld.php有着千丝万缕的关系,helloworld.php读入helloworld.html的整个模板,再把数据写入helloworld.html,当然,你给用户直接访问helloworld.php就可以了。不过你编辑前端的时候就编辑helloworld.html,搞后端就搞helloworld.php,这样实现html与php代码分离的效果。helloworld.php的代码如下:

<?php
include 'Smarty.inc.php';//使用Smarty特性
$smarty->assign('name','呵呵!');//{$name}的值为“呵呵”
$smarty->display('helloworld.html');//这个helloworld.php对应的展示页面是helloworld.html
?>

访问这个helloworld.php,运行效果如下:

实质上assign与display并不是php的关键字,而是Smarty中固有的方法。而Thinkphp这个框架则一定程度上使用了Smarty这个类库,具体见《【ThinkPHP】ThinkPHP下载、部署,Helloworld,消除难看的index.php》(点击打开链接),你会发现ThinkPHP的语法与Smarty很相似。

【Smarty】Smarty的下载、配置与Helloworld相关推荐

  1. 【Ratchet】Ratchet2.0.2的下载、配置与Helloworld

    Ratchet这东西经常被人诟病,说其组件不够多,很多东西需要自己写,但是这也正是它的优势,因为它是完全基于基本的HTML与javascript,你可以在移动端利用最基本的HTML写出自己的想要的东西 ...

  2. sonarQube 7.2版本下载配置pmd插件(版本要兼容),并设置只使用pmd规则

    sonarQube 7.2版本下载配置pmd插件(版本要兼容),并设置只使用pmd规则 sonar入门了解 sonarQube是一款优秀的持续集成平台工具,能集成业内常见的CI工具,如Jenkins, ...

  3. Understanding Clouds from Satellite Images比赛的discussion调研与colab数据集下载配置

    colab数据集下载配置代码: %%time !pip install -U -q kaggle !mkdir -p ~/.kaggle!echo '{"username":&qu ...

  4. tftp服务器从交换机上下载配置命令_软考网络工程师之交换机和路由(交换机基础)...

    1.集线器HUB 物理层连接设备,共享带宽,集线器连接的所有节点在一个冲突域中 网络设备里的操作系统称之为IOS, 2.网络设备的连接方式 CON:通过console口连接(DB-9转RJ-45),使 ...

  5. gitlab客户端下载配置

    gitlab客户端下载配置 1 进入.ssh目录 用户名称,邮箱名称可登录自己账号setting中查询 git config --global user.name "xhomexxx&quo ...

  6. FRP 内网穿透下载配置

    FRP 内网穿透下载配置 Frp服务的建造 下载: 修改配置文件 frps.ini(服务端)配置文件解释说明: frpc.ini(客户端)配置文件解释说明: 启动服务 配置启动: 创建server端服 ...

  7. Appium环境搭建之Android SDK及模拟器的下载配置

    一.Android SDK下载及配置 1.访问https://www.androiddevtools.cn/,下载Android SDK,提供有exe和zip两种格式下载 2.下载zip压缩包,直接解 ...

  8. 【嵌入式开发】 Linux Kernel 下载 配置 编译 安装 及 驱动简介

    作者 : 韩曙亮 转载请出名出处 : http://blog.csdn.net/shulianghan/article/details/38636827 一. Linux 内核简介 1. 内核功能简介 ...

  9. Python下载配置及Geany编辑器下载配置教程

    萌新要开始学习python了.把软件下载配置写出来给大家做个参考,供大家交流学习 首先Python的官网https://www.python.org/ Geany的官网https://geany.or ...

  10. 语音识别之HTK入门(一)HTK的下载配置

    语音识别之HTK入门(一)HTK的下载配置 Linux环境配置 VMware Tools安装 必备环境 HTK下载 HTK环境设置 跪拜大佬帖子: https://www.cnblogs.com/an ...

最新文章

  1. CodeGen CreateFile实用程序
  2. Fibonacci(斐波纳契)数列各种优化解法
  3. 《周四橄榄球之夜》流媒体视频拆解:Twitch VS Amazon Prime
  4. 如何使用三态工作流 - [MOSS 2007应用日记]
  5. android网络切换socket,Android版的websocket切换网络无法重连
  6. 酒店居然用大数据赚你钱?
  7. (转)Java DecimalFormat 用法(数字格式化)
  8. 关于人工智能的实现(猜测)
  9. 转载--Defunct僵尸进程
  10. Atitit. 资深高级软件工程师and 普通的区别 高度金字塔 深度 广度 1. 高度金字塔 深度 广度 1 1.1. 角色差异高度金字塔 使用者 维修者 制造者 1 1.2. 广度圈 1 1
  11. ask调制流程图_ASK调制及解调实验报告 - 范文中心
  12. Mac下Chrome添加.crx浏览器插件
  13. Unity3D丨面试题目
  14. Configured.java
  15. 为什么中国人少有人得到诺贝尔奖呢?
  16. 初中英语语法(017)-关系代词
  17. camtasia怎么在视频上添加图片
  18. const char*, char const*, char*const的区别
  19. 基本的SELECT语句的练习(MySQL)(SQLyog)
  20. 面试题:Commonjs 和 Es Module区别

热门文章

  1. nutch java_Nutch:用Java调用,而不是命令行?
  2. vue-element-admin 花裤衩 模板 ,中文版,运行报错解决方案
  3. 哥德巴赫猜想(转载)
  4. 真香!取得软考证书可参加通信行业高级职称转评转升
  5. 博客系统程序(页面设计)
  6. 关于电压跟随器的那些事
  7. 用手机打开word图表位置很乱_word排版技巧:论文图表目录制作步骤
  8. 万能的尾盘选股技巧!今日学明天买,后天稳健盈利!短线炒股一定要收藏!
  9. android 绘画笔迹回放_一种基于可缩放矢量图形的安卓平台笔迹回放方法及装置与流程...
  10. H3C静态路由与BFD联动(单跳检测)配置案例