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 ...
随机推荐
- json的认识及对json数据的相互转化
Json 和 Jsonlib 的使用 什么是 Json JSON(JvaScript Object Notation)(官网网站:http://www.json.org/)是 一种轻量级的数据交换格式 ...
- 如何配置MySQL?(三)
要进行mysql配置,首先要找到mysql的配置向导文件,这个配置向导文件就在我们安装目录下的一个bin的子目录下. 刚才我们是选择典型安装MySQL,一般windows是默认存储在C:\Progra ...
- Tomcat vs. Jetty vs. Undertow: Comparison of Spring Boot Embedded Servlet Containers
原文地址:https://examples.javacodegeeks.com/enterprise-java/spring/tomcat-vs-jetty-vs-undertow-compariso ...
- Wordpress 问题
迁移乱码 最近在做 wordpress 迁移,数据导入到服务器后,前后台都是乱码, phpMyAdmin 里的表数据就出现了乱码. 如果您也遇到和我一样的情况,本地使用 phpMyAdmin 导出 s ...
- 前端验证银行卡(Luhn校验算法)
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...
- MyEclipse for mac 快捷键
原文出处:http://blog.csdn.net/ray_seu/article/details/17384463 一直比较欣赏myeclipse的快捷键,网上搜索了一圈,发现windows平台下面 ...
- Unix版权史
原文出处: 阮一峰 这几天,我在读<Unix编程艺术>. 书中介绍了Unix的发展历史.我发现,这是一个很好的例子,说明现行版权制度具有阻碍社会发展的负面作用. 2. Unix诞生于 ...
- MongoDB 的replicattion 复制集练习
replicattion 相当于 mysql 的主从复制的读写分离,共同维护相同的数据,提高服务器的可用性[假如主(PRIMARY)不能用时,mongo会迅速自动切到从(SECON ...
- 陌上开花(CDQ分治)
题解 三维偏序裸题... 一般三维偏序是第一维排序,第二维CDQ分治,第三维树状数组. 模板题还是看代码吧... #include<iostream> #include<cstrin ...
- [Code+#4]最短路 (最短路)
[Code+#4]最短路 题目背景 在北纬 91° ,有一个神奇的国度,叫做企鹅国.这里的企鹅也有自己发达的文明,称为企鹅文明.因为企鹅只有黑白两种颜色,所以他们的数学也是以二进制为基础发展的. 比如 ...