编辑一个小的smarty类
首先先建立两个文件夹,一个temp,存储编译前的文件,一个comp,存储编译后的文件,编译前的文件使用{$title}代替<?php echo $title; ?>,然后将前者编译成后者再解析,解析后存储在comp文件夹中
定义一个解析类smarty.class.php
<?php //定义一个简单的smarty类,来编译html文件
class mini{
public $temp_uri='';//模板文件所在的位置
public $comp_uri='';//模板编译后存放的位置
public $_var=array();//变量数组 public function assign($key,$value){
$this->_var[$key]=$value;
} public function display($temp){//封装
$uri=$this->complie($temp);
require($uri);
}
/*
String $tempplate模板文件名
return String
*/
public function complie($temp){
//读出模板的内容
$te=$this->temp_uri.'/'.$temp;//编译前的文件
$source=file_get_contents($te);
$comp='./comp/'.$temp.'.php'; //判断这个文件是否是存在
if(file_exists($comp)&&filemtime($comp)>filemtime($te)){//编译后文件存在并且还要这个保存要比编译前的文件保存的早
return $comp; } $source=str_replace('{$', '<?php echo $this->_var[\'', $source);
$source=str_replace('}', '\'];?>', $source); var_dump(file_put_contents($comp,$source));
return $comp;
}
} ?>
在temp目录下的编译前文件01temp.html
<!doctype html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>{$title}</title>
</head>
<body>
下面是php模板的内容<br/>
{$content}
</body>
</html>
控制页面01.php
<?php require('./smarty.class.php');
$title='商城';
$content='这是我的商城哦';
$smarty=new mini();
$smarty->temp_uri='./temp';
$smarty->comp_uri='./comp';
// $smarty->complie('01temp.html');
$smarty->assign('title',$title);
$smarty->assign('content',$content);
$smarty->display('01temp.html');
?>
运行01.php生成在comp目录下的编译后文件01temp.html.php
<!doctype html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title><?php echo $this->_var['title'];?></title>
</head>
<body>
下面是php模板的内容<br/>
<?php echo $this->_var['content'];?>
</body>
</html>
达到正确的结果
编辑一个小的smarty类的更多相关文章
- 用CIL写程序:定义一个叫“慕容小匹夫”的类
前文回顾: <用CIL写程序:你好,沃尔德> <用CIL写程序:写个函数做加法> 前言: 今天是乙未羊年的第一天,小匹夫先在这里给各位看官拜个年了.不知道各位看官是否和匹夫一样 ...
- Java类的继承与方法调用的一个小问题
public class Father { protected void server(int i){ switch (i){ case 1: methodone(); break; case 2: ...
- 1.类的加载机制_继承类的加载(一个小的Demo)说明
今天我们先来一个小的Demo来了解类的加载顺序. public class ClassLoaderTest { public static void main(String[] args) { Sys ...
- jQuery 二级菜单,一次显示一个小类 鼠标点击显示小类
jQuery 二级菜单,一次显示一个小类 鼠标点击显示小类 本例有另外2个关联案例,演示地址分别为2.php,3.php 演示 XML/HTML Code <div class="ar ...
- 【开源一个小工具】一键将网页内容推送到Kindle
最近工作上稍微闲点,这一周利用下班时间写了一个小工具,其实功能挺简单但也小折腾了会. 工具名称:Simple Send to Kindle Github地址:https://github.com/zh ...
- 定一个小目标:明年1024能成功转行web前端,光荣地成为一个程序员!
第一次在博客园写博,我为什么要选择这里吗? 据说博客园这里的IT大牛如云,作为一个求知若渴的小白,我屁颠屁颠的跟着过来了. 于是今天早上兴高采烈的注册了账号,迫不及待的打开我的博客,呃!注册账号成功了 ...
- 关于SVN配置文件的一个小例子
1 背景假设 厦门央瞬公司是一家电子元器件设备供应商,其中有个ARM部门,专门负责ARM芯片的方案设计.销售,并在北京.上海各设立了一个办事处.对于工作日志,原先采用邮件方式发给经理,但是这种方式 ...
- UniversalImageLoader的一个小问题
最近在使用UniversalImageLoader时遇到了一个小问题,多个地方同时通过ImageLoader.getInstance().loadImage(url, new ImageSize(dp ...
- 与大家分享robotium一个小问题。Test run failed:Instrumentation run failed due to 'java.lang.ClassNotFoundException'
今天和大家分享robotium一个小问题. 我们在运行自已经搭好的框架时,有可能会出现一个找不到类的错误(如上图所示). 问题是重签名工具给出的activity有误,这时我们可以用Appt命令查看重签 ...
随机推荐
- 机器学习总结之逻辑回归Logistic Regression
机器学习总结之逻辑回归Logistic Regression 逻辑回归logistic regression,虽然名字是回归,但是实际上它是处理分类问题的算法.简单的说回归问题和分类问题如下: 回归问 ...
- 2.2CUDA-Memory(存储)和bank-conflict
在CUDA基本概念介绍有简单介绍CUDA memory.这里详细介绍: 每一个线程拥有自己的私有存储器,每一个线程块拥有一块共享存储器(Shared memory):最后,grid中所有的线程都可以访 ...
- Yum本地源配置
1.mount -t auto /dev/cdrom /mnt 使用光驱 mount -t iso9660 -o loop /home/software/rhel-server-6.4-x8 ...
- 让你系统认识flume及安装和使用flume1.5传输数据到hadoop2.2
本文链接: http://www.aboutyun.com/thread-7949-1-1.html 问题导读:1.什么是flume?2.如何安装flume?3.flume的配置文件与其它软件有什么不 ...
- Ubuntu 14.04.3 LTS 配置 DNS Server
我们目的是用一台局域网机器完成 192.168.1.113 <-->cloudshield.com的解析,指定A记录和CNAME; 0.关于Ubuntu 14.04.2 LTS 下载.安装 ...
- Camtasia Studio的安装步骤
总的来说: 1.安装 2.安装之后,进行汉化. 破解方法: 1):输入注册码安装 用户名:6-Y 注册码:GCABC-CPCCE-BPMMB-XAJXP-S8F6R 2):软件汉化 安装完成后使用汉化 ...
- A Tour of Go Exercise: Images
Remember the picture generator you wrote earlier? Let's write another one, but this time it will ret ...
- Umbraco中Document Type取名限制
在Umbraco中,每一个Document type都会被ModelsBuilder生成一个class,但是,有些developers发现,当你把一些Document Type命名为Grid, Pro ...
- 【转载】Restful 简介
转自阮一峰的网络日志 http://www.ruanyifeng.com/blog/2011/09/restful.html 越来越多的人开始意识到,网站即软件,而且是一种新型的软件. 这种&quo ...
- springMVC3学习(五)--MultiActionController
Spring提供一个多动作控制器,使用它你能够将几个动作合并在一个控制器里,这样能够把功能组合在一起. 多动作控制器存在在一个单独的包中--org.springframework.web.mvc.mu ...