编辑一个小的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命令查看重签 ...
随机推荐
- 《Data-Intensive Text Processing with mapReduce》读书笔记之一:前言
暑假闲得蛋痒,混混沌沌,开始看<Data-Intensive Text Processing with mapReduce>,尽管有诸多单词不懂,还好六级考多了,虽然至今未过:再加上自己当 ...
- 动态调用WebService 通用方法Moss 中 传统开发中都可用。
WebService是啥大家都知道了,这里不做过多的解释.通常我们使用WebService的做法基本都是在我们的项目中添加Web引用的方式,首先找到WebService的地址,然后定义命名空间,这样会 ...
- leetcode@ [68] Text Justification (String Manipulation)
https://leetcode.com/problems/text-justification/ Given an array of words and a length L, format the ...
- Altium Designer生成网表 导出网表【worldsing笔记】
Design -> Netlist for project -> Protel
- uLua学习笔记(一):uLua安装及上手
uLua下载:http://www.ulua.org/ VS2012/2013的用于编写Lua的插件:https://babelua.codeplex.com/或http://unknownworld ...
- iOS安全系列之一:HTTPS (轉載)
如何打造一个安全的App?这是每一个移动开发者必须面对的问题.在移动App开发领域,开发工程师对于安全方面的考虑普遍比较欠缺,而由于iOS平台的封闭性,遭遇到的安全问题相比于Android来说要少得多 ...
- Why Does Everyone Else Appear to Be Succeeding?
Why Does Everyone Else Appear to Be Succeeding? —Steven G. Krantz When you are a student, it will a ...
- Genymotion与本地电脑共享文件夹的方法
首先打开vbox的界面,左侧列表应该可以看到Genymotion添加的虚拟机,如图:对要设置的虚拟机单击右键,在弹出的菜单中点击“设置...”,弹出设置页面后点击左侧最后一个标签“共享文件夹”,点击右 ...
- Windows Server 2008找回密码
1.通过Windows Server 2008 R2的安装光盘引导计算机启动,映像加载完毕后 ,按 Shift+F10 ,打开命令提示符界面,进入Windows目录所在分区(cd windows\sy ...
- windows环境下搭建ffmpeg开发环境
ffmpeg是一个开源.跨平台的程序库,能够使用在windows.linux等平台下,本文将简单解说windows环境下ffmpeg开发环境搭建过程,本人使用的操作系统为windows ...