smarty课程---最最最简单的smarty例子
smarty课程---最最最简单的smarty例子
一、总结
一句话总结:其实所有的模板引擎的工作原理是差不多的,无非就是在php程序里面用正则匹配将模板里面的标签替换为php代码从而将两者混合为一个php的混编文件,然后执行这个混编文件。
smarty的两个主要函数:
assign->分配变量
display->加载模板
1、smarty的功能是什么?
用一个php文件给一个html文件分配变量
其实也是模板和控制器分离(也就是mvc模式)
2、smarty的两个函数的主要作用是什么?
assign->分配变量
display->加载模板
替换模板中的变量,例如把{$name}替换为<? echo $this->arr['name'];?>
然后用include加载执行这个模板
3、我们在外部访问的是哪个文件?
访问的是index.php,而不是index.html,也就是相对于thinkphp里面的控制器,我们根本就没有访问模板,模板只是作为模板文件使用,编译好后被扔到了控制器里面
也就是说,在thinkphp里面我们只访问了控制器,而模板里面的内容是扔到了控制器里面,我们根本没有访问模板,我们一直都只是在控制器
4、display函数里面为什么不能用echo而用include?
直接echo的话php代码不执行,因为echo本身就在php里面,所以不能接着套php标签,而编译好的模板里面是php代码
include作用:不仅仅是引入,还执行
9 function display($file){
10 $str=file_get_contents($file);
11 $ptn='/\{\$(.+)\}/i';
12 $rep='<?php echo $this->arr["$1"];?>';
13 $rst=preg_replace($ptn, $rep, $str);
14 $dstfile="templates_c/".md5($file).".php";
15 file_put_contents($dstfile, $rst);
16 include($dstfile);
17 //echo "$str";
18 //直接echo的话php代码不执行,因为echo本身就在php里面,所以不能接着套php标签
19 }
二、最最最简单的smarty例子
1、截图
目录结构


运行成功后的样例

2、代码
index.php
<?php
include("libs/Smarty.class.php"); $s=new Smarty();
$s->assign("name","user1");
$s->assign("age","30"); $s->display("templates/index.html");
?>
模板 index.html
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Document</title>
</head>
<body>
<h1>{$name}</h1>
<h1>{$age}</h1>
</body>
</html>
Smarty.class.php
<?php
class Smarty{
public $arr; function assign($key,$val){
$this->arr[$key]=$val;
} function display($file){
$str=file_get_contents($file);
$ptn='/\{\$(.+)\}/i';
$rep='<?php echo $this->arr["$1"];?>';
$rst=preg_replace($ptn, $rep, $str);
$dstfile="templates_c/".md5($file).".php";
file_put_contents($dstfile, $rst);
include($dstfile);
//echo "$str";
//直接echo的话php代码不执行,因为echo本身就在php里面,所以不能接着套php标签
}
}
?>
Smarty编译后的:fb5aa1cd1261d08d02db6f7dc314d9ab.php
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Document</title>
</head>
<body>
<h1><?php echo $this->arr["name"];?></h1>
<h1><?php echo $this->arr["age"];?></h1>
</body>
</html>
smarty课程---最最最简单的smarty例子的更多相关文章
- vue双向数据绑定最最最最最简单直观的例子
vue双向数据绑定最最最最最简单直观的例子 一.总结 一句话总结:双向绑定既不仅model可以影响view的数据,view也可以影响model的数据 view model 数据 1.vue双向数据绑定 ...
- smarty课程---smarty3的安装和使用
smarty课程---smarty3的安装和使用 一.总结 一句话总结:smarty 是什么,就不多说了,用过php,接触过php的人都对smarty 再熟悉不过了.它是一个很强大的代码分离软件,作为 ...
- smarty课程---smarty的处理过程是怎样的
smarty课程---smarty的处理过程是怎样的 一.总结 一句话总结:编译文件里时间戳记录模板文件修改时间,如果模板被修改过就可以检测到,然后重新编译 1. smarty将php源文件,首先编译 ...
- 2019-07-24 Smarty模板引擎的简单应用
smarty是什么? Smarty是一个使用PHP写出来的模板引擎,是业界最著名的PHP模板引擎之一.Smarty分离了逻辑代码和外在的内容,提供一种易于管理和使用的方法,用来将原本与HTML代码混杂 ...
- 其它课程中的python---4、Matplotlib最最最最简单使用
其它课程中的python---4.Matplotlib最最最最简单使用 一.总结 一句话总结: 慢慢来吧,不着急,心态平和和沉稳:每次和世界交互,你就能感受到无比的自信 1.如何区别python2和p ...
- php爬虫最最最最简单教程
php爬虫最最最最简单教程 一.总结 一句话总结:用的爬虫框架,却是用的自己的例子(因为网站结构的变化,作者的例子不一定好用) 爬虫框架 自己例子 1.发现自己的运行效果和作者的不一样怎么办? 耐下性 ...
- 10分钟完成一个最最简单的BLE蓝牙接收数据的DEMO
这两天在研究蓝牙,网上有关蓝牙的内容非常有限,Github上的蓝牙框架也很少很复杂,为此我特地写了一个最最简单的DEMO,实现BLE蓝牙接收数据的问题, 不需要什么特定的UUID, 不需要什么断开重连 ...
- 一个简单的CORBA例子
因为对CORBA分析的需要,这里写一个简单的CORBA例子.从JDK1.2开始,JDK中集成了ORB的实现,本例子使用了JDK1.7,对于JDK1.2+应该都没有问题.这个例子实现一个简单的加减乘除的 ...
- 菜鸟学习Hibernate——简单的一个例子
一.Hibernate开发. 上篇博客已经为大家介绍了持久层框架的发展流程,持久层框架的种类. 为了能够使用Hibernate快速上手,我们先讲解一个简单的Hibernate应用实例hibernate ...
随机推荐
- 基于JS的身份证验证(完整版)
var Wi = [ 7, 9, 10, 5, 8, 4, 2, 1, 6, 3, 7, 9, 10, 5, 8, 4, 2, 1 ]; // 加权因子 var ValideCode = [ 1, 0 ...
- php生成无限栏目树
栏目数组:$arr=Array( Array('cid' => 2,'cname' => '新闻','pid' => 0), Array('cid' => 4,'cnam ...
- ios下微信浏览器如何唤醒app?app已上架应用宝
android下可以通过在应用宝微下载地址后面加参数&android_schema='应用schema'来实现,ios下如何实现? ios下微信浏览器如何唤醒app?app已上架应用宝 > ...
- [NOI2016]优秀的拆分(SA数组)
[NOI2016]优秀的拆分 题目描述 如果一个字符串可以被拆分为 \(AABB\) 的形式,其中 A和 B是任意非空字符串,则我们称该字符串的这种拆分是优秀的. 例如,对于字符串 \(aabaaba ...
- OpenJDK源码研究笔记(六)--观察者模式工具类(Observer和Observable)和应用示例
本文主要讲解OpenJDK观察者模式的2个工具类,java.util.Observer观察者接口,java.util.Observable被观察者基类. 然后,给出了一个常见的观察者应用示例. Obs ...
- [Recompose] Configure Recompose to Build React Components from RxJS Streams
Recompose provides helper functions to stream props using an Observable library of your choice into ...
- Atitit.软件开发的终于的设计 dsl化,ast化(建立ast, 解析运行ast)
Atitit.软件开发的终于的设计 dsl化,ast化(建立ast, 解析运行ast) 1. 使用js,html 撰写dsl 1 1.1. 架构图 1 1.2. html 2 1.3. Js 2 1. ...
- WAS集群系列(5):集群搭建:步骤3:安装IHS软件
选择"安装IBM HTTPServer"选项,点击"安装向导".例如以下图提示: 安装提示,逐步点击"下一步",当中偶有几处细节注意就可以. ...
- Broadleaf电商系统开发(一) - Broadleaf介绍
Broadleaf Commerce 是一个开源的 Java 电子商务平台,基于 Spring 框架开发.提供一个可靠.可扩展的架构,可进行深度的定制和高速开发. Broadleaf Commerce ...
- json数据转化成实体 存到数据库.
直接看步骤吧 1.一般我们会调用别人给的webservice获取一个字符串数据.如果为String data="xxxxxxxxxx"; 这个data事实上就是样例Enterpr ...