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. 【tomcat资源映射本地路径配置】

    需要注意的是:eclipse默认的服务器配置是其内置的. 如果使用自定义的tomcate的配置文件需要在服务器中配置: 1:进入到tomcat根目录下,然后vim conf/server.xml,在& ...

  2. wcf 基本配置

    <system.serviceModel> <services> <service name="ServiceUpdater.ServiceUpdate&quo ...

  3. mac安装rz,sz文件操作指令包

    安装需要具备什么样的环境? 1.安装item2 iterm2是一个与terminal一样的指令窗口 item2 下载地址,​​http://iterm2.com/downloads.html,下载后解 ...

  4. JS实现中英文混合文字溢出友好截取功能

    在显示字符串的时候,避免字符串过长往往会对字符串进行截取操作,通常会用到js的 substr 或者 substring方法, 以及 字符串的length属性 substr() 方法可在字符串中抽取从 ...

  5. The Struts dispatcher cannot be found. This is usually caused by using Struts tags without the associated filter.

    The Struts dispatcher cannot be found. This is usually caused by using Struts tags without the assoc ...

  6. Rabbit的直连交换机direct

    直连交换机类型为:direct.加入了路由键routingKey的概念. 就是说 生产者投递消息给指定交换机的指定路由键. 只有绑定了此交换机指定路由键的消息队列才可以收到消息. 生产者: packa ...

  7. 在C#中执行带有GO的批量sql语句

    引用 思海网络  在用C#中调用ADO执行批量SQL语句的时候,会出现无法识别GO语句的错误.这个时候,我们以GO语句为分割点,把整个批量语句分割成N块独立的SQL语句代码块(不包含GO语句),然后再 ...

  8. Found 1 slaves: Use of uninitialized value in printf at /usr/local/percona-toolkit/bin/pt-online-schema-change line 8489

    1. problem description: as the title show, i miss the first problem using pt-online-schema-change to ...

  9. UTF8文件带BOM引起的问题

    起因是公司iOS端竟然加载除了HTML代码,百思不得其解,查文献,原来如此... UTF-8 不需要 BOM,尽管 Unicode 标准允许在 UTF-8 中使用 BOM.所以不含 BOM 的 UTF ...

  10. Java xml 操作(Dom4J修改xml   + xPath技术  + SAX解析 + XML约束)

    1 XML基础 1)XML的作用 1.1 作为软件配置文件 1.2 作为小型的"数据库" 2)XML语法(由w3c组织规定的) 标签: 标签名不能以数字开头,中间不能有空格,区分大 ...