Smarty模板

是做什么用的??

是将前端的显示和后台的逻辑进行分离,就相当于把前台显示的页面和后台要实现的某些功能的逻辑给分离出来了,分离在两个文件里,也就是说,前端只负责显示,后端只负责逻辑操作,就相当于cms一样。Smarty模板就是实现前后分离的,能够程序多人开发,比如说,美工就做前端程序员就做后端,实现分工开发,便于后期维护。比如这个页面看着不好看了,我在换一种风格,可以直接换掉模板就可以了。把Smarty模板放在你的程序文件加里就可以了,这个文件加的名字可以随便取。

这个文件加的名字可以随便取。

libs 是smarty模板的核心文件

这些文件是smarty模板里自带的

这是smarty的核心类(smarty为什么能实现前后分离,完全取决于这个类,根据这个类的方法来进行分离的)。这个类是我们要用到的

自动加载的意思

放插件的,smarty自带的插件。系统自带的插件

插件目录。系统核心插件,里面的插件可以拿来使用,里面都是类文件

Smarty就相当于我们做程序的核心目录,所有的程序代码都是在Smarty目录里写

要使用Smarty模板的话,就要引用类Smarty.class.php(它是Smarty的核心类)

Smarty.class.php如何实现前后端分离的????????

建了一个类文件

 <?php
//模拟做了一个类 /*这个类前后端分离的*/ /* Smarty类文件*/
class Smarty
{ //成员变量
public $left = "<{";//左分隔符
public $right = "}>"; //右分隔符 //这两个分割符是用来,在做phpcms的时候只要是在我们的模板里想要嵌入php的标签外层都加了一个花括号{},这个花括号就代表左分隔符、右分隔符,它是phpcms里面使用的模板所提供的左分隔符、右分隔符,也就是说phpcms里面他的左分隔符就是“{”、右分隔符就是“}”,就是要在模板里嵌入phpcms提供的标记必须要使用花括号{}括起来,花括号是从哪定义的就是从模板引擎的类文件里定义的,定义的是花括号{},所以当它遇到{}时就会把它当成变量来解析
public $attr = array();//存储变量信息,存储变量的数组 //向模板引擎注册变量(向模板里注册变量或者叫添加变量,使用的)
function assign()//它是成员变量.这个方法需要两个($name,$value)需要两个参数,变量名和变量的值
//function assign()这个方法量向模板里注册变量或者叫添加变量使用的
{
//调用这个function assign()方法,向$attr = array();数组里添加内容 $this->attr[$name] = $value;
}
//显示模板的方法
function display($filename)//需要一个参数,模板文件的路径(从这个页面通过相对路径或者绝对路径找到这个模板文件交给我)
{ //这个方法怎么把静态的页面怎样拿过来之后显示静态的页面
//$filename是传过来静态页面路径,有路径可以获取里面的内容, //获取模板文件的内容(获取静态页面的内容),的方法是file_get_contents($filename//参数是路径)
$str = file_get_contents($filename);//静态页面的所有内容都获取到了 /*
这就是它获取的内容,是字符串,这就是$str获取到的
<html>
<head></head>
<body>
<div><{$aa}></div> //<{$aa}>在这个位置输出一个$aa 的变量
</body>
</html>
*/ //怎样把模板里的$aa,变成数组里有的内容
//调用display方法之前,先要往assign模板里注册变量。注册了一个名为assign(变量名为$aa的变量)的变量,在模板里要显示$aa的值
//把变量$aa替换成,数组里的$attr索引为aa的值 //用正则匹配模板里面的变量
/*<html>
<head></head>
<body>
<div><{$aa}></div>
</body>
</html> //匹配<{$aa}>$aa里面的内容.如果瞒足<{}>当做Smarty的标签,就把这个标签替换成<?php echo $attr["aa"] ?>php的标记
*/ //没有把替换好的内容直接输出,又做了一步 //将替换好的内容存到文件(相当于临时文件)里面,内容还是存在$str里,把内容写入文件,写入文件的方法是file_put_contents
$lujing = "./mobanc/aa.php";
file_put_contents($lujing,$str); //将临时文件读取(到当前的页面显示):include的方法,相当于直接拿这个方法来时用
include($lujing); }
}

比如,这个类做好以后

有一个文件---------“test.php”

“test.php”这个页面要使用类

新建了一个文件叫-----------test.php

这个文件要使用这个类了

<?php

//这个页面要引用这个类了"Smarty.class.php"

include("Smarty.class.php");

//这个页面访问的是“test.php”,但是要显示index.html,index.html里面需要显示一个变量$aa

//先造$smarty的对象

$smarty = new Smarty();

//前端就是:<div>{$aa}</div>,<div>里面要显示变量$aa的值

//在这个页面就要注册一个变量叫$aa

$smarty->assign("aa","12134");//smarty调用里面的方法assign(变量名,变量的值)

//要显示index.html页面,要调用smarty里面的display(路径)方法

$smarty->display("index.html");

在main文件夹下建一个文件--------“test.php”

访问“test.php”这个文件的话,需要使用smarty类

这个“test.php”文件,需要把smarty类引用

<?php

include("../libs/Smarty.class.php");//引用Smarty类

$smarty = new Smarty();//造对象

//可以调用里面的方法,注册变量

//调用$smarty里面的方法assign(变量名,变量值)注册变量

$smarty->assign("aa","123");

//调用$smarty里面的方法display(),去显示模板

$smarty->display("../templates/tese.html");//调用这个“tese.html”模板来显示

templates模板文件夹

在templates这个文件夹下新建了一个-------“test.php”

要显示的是“test.html”这个模板

//这个displaya()方法还用到了一个临时文件,这个临时文件存放在什么位置

这个文件夹是存放临时文件的

还有一个缓存文件存放在

缓存文件存放在,cache文件夹里面

总结:

在访问我们做“test.php”这个页面的时候,

我们需要做的几个事情:

【1】         做好这个“test.php”页面

【2】         做好模板

【3】         需要规定好临时文件存放的目录

【4】         还有一个格外的,缓存文件的目录

【5】         代码:

使用模板的话,需要用到很多文件夹,要对这些文件夹进行一个配置

配置好在用

建一个文件-------“init.inc.php”

他就是Smarty的配置文件。这个文件的位置可以随便放

<?php

define("ROOT",str_replace("\\","/",dirname(__FILE__)).'/'); //常量ROOT中指定项目根目录

echo __FILE__;//获取当前文件所在的位置

输出的结果是:::::

echo dirname(__FILE__);   // dirname(__FILE__); 这个文件所在的文件夹

输出返回的结果:::::::

这个页面,是访问的页面

显示的结果:

例子:

显示的结果::

临时文件:

PHP---------Smarty模板的更多相关文章

  1. ThinkPHP+Smarty模板中截取包含中英文混合的字符串乱码的解决方案

    好几天没写博客了,其实有好多需要总结的,因为最近一直在忙着做项目,但是困惑了几天的Smarty模板中截取包含中英文混合的字符串乱码的问题,终于解决了,所以记录下来,需要的朋友看一下: 出现乱码的原因: ...

  2. 12月15日下午Smarty模板函数

    1.{$var=...} 这是{assign}函数的简写版,你可以直接赋值给模版,也可以为数组元素赋值. <{$a = 10}><!--赋值语句--> <{$a}> ...

  3. 12月15日smarty模板基本语法

    smarty基本语法: 1.注释:<{* this is a comment *}>,注意左右分隔符的写法,要和自己定义的一致. <{* I am a Smarty comment, ...

  4. SMARTY模板中如何使用get,post,request,cookies,session,server变量

    {$smarty}保留变量不需要从PHP脚本中分配,是可以在模板中直接访问的数组类型变量,通常被用于访问一些特殊的模板变量.例如,直接在模板中访问页面请求变量.获取访问模板时的时间戳.直接访问PHP中 ...

  5. ThinkPHP3.2.3整合smarty模板(二)

    前言:继ThinkPHP3.2.3整合smarty模板(一)之后,继续来探讨一下tp框架整合smarty模板,看到有人在群上问到怎么使用自定义的常量,今天就具体来谈谈: 一.开发一个项目,必不可少会用 ...

  6. smarty 模板几个例子

    一.assign和display方法的使用以及几个变量调节器 header("content-type:text/html;charset=utf-8");//加载Smarty引擎 ...

  7. smarty模板引擎

    1.    使用smarty 1.1 项目引入 // 3, 连接数据库,提取相关数据 $title = "Smarty模板引擎"; $content = "Smarty模 ...

  8. Smarty模板函数

    1.{$var=...} 这是{assign}函数的简写版,你可以直接赋值给模版,也可以为数组元素赋值. <{$a = 10}><!--赋值语句--> <{$a}> ...

  9. 写一个迷你版Smarty模板引擎,对认识模板引擎原理非常好(附代码)

    前些时间在看创智博客韩顺平的Smarty模板引擎教程,再结合自己跟李炎恢第二季开发中CMS系统写的tpl模板引擎.今天就写一个迷你版的Smarty引擎,虽然说我并没有深入分析过Smarty的源码,但是 ...

  10. Smarty模板技术学习(二)

    本文主要包括以下内容 公共文件引入与继承 内容捕捉 变量调剂器 缓存 Smarty过滤器 数据对象.注册对象 与已有项目结合 公共文件引入与继承 可以把许多模板页面都用到的公共页面放到单独文件里边,通 ...

随机推荐

  1. [转]让ASP.NET Web API支持$format参数的方法

    本文转自:http://www.cnblogs.com/liuzhendong/p/4228592.html 在不使用OData的情况下,也可以让ASP.NET Web API支持$format参数, ...

  2. 不能修改列 "。。",因为它是计算列,或者是 UNION 运算符的结果。

    修改Mapping this.Property(t => t...).HasDatabaseGeneratedOption(System.ComponentModel.DataAnnotatio ...

  3. mysql5.7忘记密码修改方法

    mysql5.7忘记密码修改方法 mysql是开发中最常用的关系数据库之一.一般在安装数据库到时候会自定义root密码,有时候会忘记该密码,这时候需要对数据库进行密码修改. 一.windows下更改m ...

  4. 四 Scatter/Gather

    scatter/gather用于描述从Channel中读取或者写入到Channel的操作. 分散(scatter):从Channel中读取在读操作中将读取的数据写入多个Buffer中.因此,Chann ...

  5. C Primer Plus note1

    C语言编译错误:multiple definition of `main' main多重定义,在同一个工程中定义了多个main函数 出现如下图的错误: 这是因为在第一张图中,有一个main.c的mai ...

  6. Oracle自定义函数&加密

    在sql中频繁使用的功能(逻辑.加密等)可以写成自定义函数进行封装,之后再调用即可. CREATE OR REPLACE FUNCTION "函数名" (参数名 参数类型 参数数据 ...

  7. 简单工厂模式的C++、Java实现

    1.简单工厂模式UML UML如下: 图1. 简单工厂模式UML 2.C++实现 类视图如下: 图2. C++实现简单工厂模式类视图 其中,SimpleFactory实现为: Product * Si ...

  8. OpenCV中Mat属性step,size,step1,elemSize,elemSize1

    Mat的step,size,step1,elemSize,elemSize1这几个属性非常容易混淆. OpenCV的官方参考手册也没有解释清楚这几个概念. 前一段时间研究了一下每个属性的含义,如果有什 ...

  9. 从数据库读取数据后将其输出成html标签

    最常用的方法,使用JS或JQ JQ: $("#div").html("<span>我是HTML代码</span>"); JS: var ...

  10. linux crontab 的使用

    linux crontab 的使用 准备(实验楼需要,实际环境不需要):sudo service rsyslog startsudo cron -f & crontab 使用添加任务:cron ...