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. FTPS Firewall

    989 for the FTPS data channel implicit FTPS was expected to listen on the IANA Well Known Port 990/T ...

  2. .NET 中使用阿里云短信的 API 接口

    小弟初来乍到,这也是我的第一篇文章,写的不好的地方还望指正.谢谢各位! 引言 短信服务(Short Message Service)是阿里云为用户提供的一种通信服务的能力,支持快速发送短信验证码.短信 ...

  3. 1.http请求编程-->基础原理

    一.技术分析 打开网页,不管我们请求的是静态资源还是动态资源,IIS都会根据ISAPI(微软和Process软件公司联合提出的Web服务器上的API标准)这一标准,将请求的文件根据文件后缀名的不同,转 ...

  4. Java - 用builder代替构造器

    静态工厂和够构造器有一个共同的局限性:遇到大量的参数时无法很好的扩展. 先说说构造器. 其实field不多时重叠构造器(telescoping constructor)是个不错的方法,易于编写也易于调 ...

  5. [android] 天气app布局练习

    主要练习一下RelativeLayout和LinearLayout <RelativeLayout xmlns:android="http://schemas.android.com/ ...

  6. Mybatis插入、查询自定义的数据类型的方式

    1.首先创建JavaBean对象 package com.zuo.Mybatis.bean; public class PhoneNumber { private String countryCode ...

  7. PHP+MySql实现图书管理系统

    这个图书管理系统是我学完PHP时写的一个练手项目,功能参考了自己学校的图书管理系统.为了锻炼自己的动手能力以及加深对代码的理解,前端和后端均由自己完成,前端使用了一些基本的框架(毕竟我主攻后端开发方向 ...

  8. thrift简介

    thrift是一个软件框架,用来进行可扩展且跨语言的服务的开发.它结合了功能强大的软件堆栈和代码生成引擎,以构建在 C++, Java, Python, PHP, Ruby, Erlang, Perl ...

  9. go install runtime/cgo: open /usr/local/go/pkg/darwin_amd64/runtime/cgo.a: permission denied

    在做更新时,收到下面提示: go get  github.com/astaxie/beego go install runtime/cgo: open /usr/local/go/pkg/darwin ...

  10. apply()方法和call()方法

    obj.func.call(obj1)       //是将obj1看做obj,调用func方法,将第一个参数看做函数调用的对象,可以看做,将obj的方法给obj1使用 ECMAScript规范给所有 ...