对前后端进行分离

如果要用的话,要从网上把smarty文件下载下来,才能用

smarty的核心是一个类

建一个php文件,写一个类文件

<?php
class smarty
{
public $left = "{"; //左分隔符
public $right = "}"; //右分隔符 public $arr = array(); //存储变量 //向模板里面注册变量
function assign($key,$value)
{
$this->arr[$key] = $value;
} //显示模板
function display($name)
{
//找到模板路径
$url = "/".$name;
//模板读取
$str = file_get_contents($url); //将str里面的某些内容(变量)做了替换
//将模板里面的<{$aa}> 替换成 <?php echo $arr[aa] //将替换好的字符串保存到编译好的文件
file_put_contents($filename,$str); //将编译好的文件拿到当前页面显示
include($filename); }
}

来看一下这个方法是什么个原理,看一下效果

在这个目录下建个php文件

<?php
include("../init.inc.php"); $smarty->assign("ceshi","你好"); //注册变量的方法 $smarty->display("test.html");

然后再在这个目录下写个html文件

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>无标题文档</title>
</head> <body>
<{$ceshi}>
</body>
</html>

然后运行php文件,看看能出来什么效果

它输出了html文件里面的内容

这样就能知道php文件里面的display是干嘛了,是把html文件里面的模板放到php这个页面来显示

然后再把里面的变量解析

这样就能实现了前后端分离了,访问的页面不一定是要显示的页面

如果html里面用到了图片或样式表,相对于我们访问的文件来找,并不一定是html

来看一下一个真正的smarty类

这是从网上下载的一个smarty文件

有几个文件是自己后来加的,刚下的时候文件没有那么多

其中这个文件是比较重要的,是smarty的一个入口文件

再就是这个文件

点开它,有smarty的核心类

里面的内容逻辑和刚才写的那个简单文件差不多,它里面有很多成员变量

libs是smarty的一个核心目录

里面的plugins是存放插件的一个文件

sysplugins是存放系统插件

cache是用来放缓存文件

configs用来放配置文件

templates放模板文件

templates_c 用来放编译好的文件

来看一下入口文件的内容,也就是init.inc.php里面的内容

<?php

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

//echo str_replace("\\","/",dirname(__FILE__)).'/'; //获取当前文件所在的位置

require ROOT.'libs/Smarty.class.php'; //加载Smarty类文件
$smarty = new Smarty(); //实例化Smarty对象 define("CSS_PATH","/project/css/");
define("JS_PATH","/project/js/"); //$smarty -> auto_literal = false; //就可以让定界符号使用空格
$smarty->setTemplateDir(ROOT.'templates/'); //设置所有模板文件存放位置
//$smarty->addTemplateDir(ROOT.'templates2/'); //添加一个模板文件夹
$smarty->setCompileDir(ROOT.'templates_c/'); //设置编译过的模板存放的目录
$smarty->addPluginsDir(ROOT.'plugins/'); //设置为模板扩充插件存放目录
$smarty->setCacheDir(ROOT.'cache/'); //设置缓存文件存放目录
$smarty->setConfigDir(ROOT.'configs/'); //设置模板配置文件存放目录 $smarty->caching = false; //设置Smarty缓存开关功能
$smarty->cache_lifetime = 60*60*24; //设置缓存模板有效时间一天 $smarty->left_delimiter = '<{'; //设置模板语言中的左结束符
$smarty->right_delimiter = '}>'; //设置模板语言中的右结束符 ?>

在网址输入入口文件的地址,输出的是入口文件的目录

在入口文件里其实默认的分隔符是花括号,但为了避免出问题就加上了尖括号

Smarty模板的基础的更多相关文章

  1. smarty模板的基础搭建

    1.下载smarty模板,官方即有 2.解压即可.你会得这样的目录 除了libs文件夹其余都可以删掉(不知道有啥用). 3.在当前目录下分别创建templates.templates_c.cache. ...

  2. smarty模板开发基础总结

    前提:1. 部署smarty模板目录:2. 编写Smarty类的子类,定制好template_dir.compile_dir.config_dir.cache_dir.left_delimiter.r ...

  3. smarty模板引擎基础(二)

    smarty模板引擎所需文件夹共可分为存放页面缓存的(cache).存放配置文件的(configs).存放模板扩充插件的(plugins).存放模板文件的(templates).存放编译后的模板文件的 ...

  4. smarty模板基础1

    smarty模板的作用可以让前端和后端分离(也就是前端的显示页面和后端的php代码). smarty模板的核心是一个类,下载好的模板中有这么几个重要的文件夹 (1)libs核心文件夹(2)int.in ...

  5. smarty模板基础2

    Smarty自带了一些内置函数,这些内置函数是Smarty模板引擎的组成部分.他们被编译成相应的内嵌PHP代码,以获得最大性能. 您创建的自定义函数不能与内置函数同名,也不必修改这些内置函数. 其中一 ...

  6. smarty模板基础3 *缓存数据*

    缓存数据,这个并不是暂存的缓存,而是写入了内存的缓存 通过一个例子来书写:缓存数据 一.书写php和html页面的基本功能 既然是用smarty模板,那么前端和后端要分开写了 (1)php页面 < ...

  7. smarty模板基础----缓存数据

    缓存数据,这个并不是暂存的缓存,而是写入了内存的缓存 通过一个例子来书写:缓存数据 一.书写php和html页面的基本功能 既然是用smarty模板,那么前端和后端要分开写了 (1)php页面 1 2 ...

  8. smarty模板引擎(一)基础知识

    一.基本概念 1.什么是mvc?     mvc是一种开发模式,核心思想是:数据的输入.数据的处理.数据显示的强制分离. 2.什么是smarty?     smarty是一个php的模板引擎.更明白的 ...

  9. 用 php 实现一个视图组件和模板引擎——基础

    只要不是做后端接口开发和一些作为守护进程之类的服务器脚本,大多数时候都是在和浏览器打交道,因此合理组织并展现 html 标签是最为常见的工作.一般大家使用框架时,都会自带有一套视图组件和模板引擎. 我 ...

随机推荐

  1. 冒泡排序法-java案例详解

    /** * 功能:冒泡排序法 * 思想:通过对待排序序列从后向前(从下标较大的元素开始),依次比较相邻元素的排序码, * ,若发现逆序这交换,使得排序码较小的元素逐渐从后部移向前部(从下标较大的单元移 ...

  2. html中object标签详解

        定义和用法 object标签定义一个嵌入的对象.请使用此元素向您的 XHTML 页面添加多媒体.此元素允许您规定插入 HTML 文档中的对象的数据和参数,以及可用来显示和操作数据的代码. &l ...

  3. 报错找不到jquery-1.10.2.min.map解决办法

    http://fruithardcandy.iteye.com/blog/1941452

  4. js连接sqlserver进行查询

    <script language="JavaScript"> // 创建数据库对象 var objdbConn = new ActiveXObject("AD ...

  5. 使用Flex4容器若干技巧

    本文适用于正在寻找使用Flex 4容器和布局的快速参考指南的开发人员. 尽管这不一定是一个复杂问题,但这似乎是许多开发人员的挫折的来源,特别是对于那些Flex刚刚入门的开发人员. 当开发人员不知道如何 ...

  6. 《深度探索C++对象模型》笔记——Function语意学

    member的各种调用方式 C++支持三种类型的member functions:static.nonstatic和virtual. nonstatic member functions会被编译器转换 ...

  7. 深入React事件系统(React点击空白部分隐藏弹出层;React阻止事件冒泡失效)

    只关注括号内问题的同学,可直接跳转到蓝字部分.(标题起的有点大,其实只讨论一个问题) 两个在React组件上绑定的事件,产生冲突后,使用e.stopPropagation(),阻止冒泡,即可防止事件冲 ...

  8. 怎么应用vertical-align,才能生效?

    vertical-align 的使用  以前总是想要一些元素垂直居中对齐,经常用line-height,可是对于图片来说,line-height的表现并不理想(非常不理想)可看我的文章:line-he ...

  9. css,html性能优化

    css性能优化 CSS是负责布局和渲染的重要角色,漂亮的页面当然能够吸引用户.本文是自己在开发过程中总结的关于CSS与性能的关系,可能有不对之处,希望能够指出. ? 1.所有的样式尽量放在css文件中 ...

  10. 【The Most Important】浅谈JSP表单Post方式中文乱码问题

    首先祝大家鸡年吉祥!在这里我要说下这两天里这个问题困扰着我,大过年的心情都被烦扰的不好了,所以我带着兴奋的心情来赶快完成这篇博客,解决大家的问题.我的问题是post方式传递表单数据,Tomcat服务器 ...