smarty模板引擎(一)基础知识
<?phprequire_once './cls_MiniSmarty.php';$miniSmarty = new MiniSmarty();//传递数据$miniSmarty->assign("title","hello minismarty!");$miniSmarty->assign("content","<font color='red'>this is content!</font>");//传递数据到哪个页面显示$miniSmarty->display("intro.tpl");
?>
3.编写intro.tpl文件
<!--这是个模板文件-->
<html>
<head>
<meta http-equiv="Content-Language" content="en" />
<meta name="GENERATOR" content="PHPEclipse 1.0" />
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
<title>{$title}</title>
</head>
<body bgcolor="#FFFFFF" text="#000000" link="#FF9966" vlink="#FF9966" alink="#FFCC99">
{$content}
</body>
</html>
<?php
/**** 原本是通过smarty模板引擎给模板提供数据的* 如今自己模仿写一个模板,给模板提供数据的类* smarty执行时,读取模板文件,将模板文件替换成可执行的php文件。server真正执行的文件是处理后的文件。*/
class MiniSmarty {//模板文件路径var $template_dir = "./templates/";//模板文件被替换后的文件路径var $templates_c_dir = "./templates_c/";//存放变量值var $tpl_vars = array ();//主要模拟2个方法/*** 加入数据* 參数1:键* 參数2:值,默觉得null*/function assign($tpl_var, $var = null) {if ($tpl_var != '') {$this->tpl_vars[$tpl_var] = $var; //将数据加入到数组中}}/*** 显示数据* 參数1:显示到哪个模板文件里*/function display($tpl_file) {//获得模板文件的路径$tpl_file_path = $this->template_dir . $tpl_file;//获得模板文件被编译后的文件路径$compile_file_path = $this->templates_c_dir . "com_" . $tpl_file . ".php";//推断文件是否存在if (!file_exists($tpl_file_path)) {return false;}//不用每次都生成编译文件,仅仅有编译文件不存在或者模板文件被改动了才生成新的编译文件//相当于缓存了编译文件//filemtime函数:获得文件的生成时间if (!file_exists($compile_file_path) || filemtime($tpl_file_path) > filemtime($compile_file_path)) {//读取模板文件的内容$fpl_file_content = file_get_contents($tpl_file_path);$newStr = myReplace($fpl_file_content);//将替换后的字符串生成新的文件,也就是编译后的文件file_put_contents($compile_file_path, $newStr);}//引入编译后的文件include $compile_file_path;}/*** 对模板文件里的内容进行替换,获得新的字符串*/function myReplace($fpl_file_content) {$pattern = array ('/\{\s*\$([a-zA-Z_][a-zA-Z0-9_]*)\s*\}/i');$replace = array ('<?php echo $this->tpl_vars["${1}"] ?>');$newStr = preg_replace($pattern, $replace, $fpl_file_content);return $newStr;}
}
?>
$smarty->right_delimiter=">}";
$smarty->cache_dir="./smarty_cache";//假设使用缓存的话:缓存的路径
smarty模板引擎(一)基础知识相关推荐
- 模板引擎Freemarker基础知识
Freemarker基础知识 Freemarker是什么 FreeMarker 基础指令 List指令 遍历Map数据 if指令 其它指令 运算符 空值处理 内建函数 入门Demo 要导入的依赖 配置 ...
- php中smarty模板的优点,php的smarty模板引擎有哪些特点
php的smarty模板引擎有哪些特点2020-06-30 16:46:07 php的smarty模板引擎的特点有:1.运行速度快:2.不需要多余的模板语法解析:3.仅对修改过的模板文件进行重新编译: ...
- smarty模板引擎--php高级最详细教程
Smarty(模板引擎) 原创 一.什么是模板引擎? Smarty是一个php模板引擎.更准确的说,它分开了逻辑程序和外在的内容,提供了一种易于管理的方法.可以描述为应用程序员和美工扮演了不同的角色, ...
- php模板引擎smarty案例下载,PHP – Smarty模板引擎 – Download下载 – 2.6.22 | 学步园...
PHP - Smarty模板引擎 - Download下载 - 2.6.22 [PHP - Smarty模板引擎 - 官方网站] [PHP - Smarty模板引擎 - 下载地址] http://sm ...
- PHP Smarty 模板,PHP Smarty模板引擎
前言:概念上的东西就简单过一下,细节上的东西就不深究了.作下读书笔记,且该知识点是后续学习MVC框架的一部分. 1.什么是模板引擎 1.1.网站页面模板:即每个页面仅是一个板式,包括结构.样式和页面布 ...
- php中smarty末班引擎,php之smarty模板引擎
前面的话 对PHP来说,有很多模板引擎可供选择,但是一个使用PHP编写出来的,是业界最著名.功能最强大的一种PHP模板引擎.像PHP一样拥有丰富的函数库,从统计字数到自动缩进.文字环绕以及正则表达式都 ...
- smarty模板引擎原理解析
//php 控制器文件 <?php //引入模板引擎文件 include("20130304.php"); $smarty = new TinySmarty(); $qq_n ...
- CodeIgniter_2.2.0整合smarty模板引擎
CodeIgniter_2.2.0整合smarty模板引擎 转载于:https://blog.51cto.com/murongwenxian/1605204
- 深入浅出之Smarty模板引擎工作机制(一)
深入浅出Smarty模板引擎工作机制,我们将对比使用smarty模板引擎和没使用smarty模板引擎的两种开发方式的区别,并动手开发一个自己的模板引擎,以便加深对smarty模板引擎工作机制的理解. ...
最新文章
- Cocos2d-x Eclipse下程序运行产生错误Effect initCheck() returned -1
- 操作符重载——C/C++学习笔记
- Fast Flux技术——本质就是跳板,控制多个机器,同一域名指向极多的IP(TTL修改为0),以逃避追踪...
- java多线程init,Java多线程 - 线程 - 初识
- 贪心算法之——会场安排(nyoj14)
- ACM-ICPC 2018 沈阳赛区网络预赛 Spare Tire(容斥+公式推)
- IJCAI 2019 论文解读 | 基于超图网络模型的图网络进化算法
- 用户界面设计的一些方法和基本原则
- matlab eig 复杂度,MATLAB中的eig函数
- 【VirtualBox】VirtualBox的桥接网络模式,为啥网络不稳定?
- Git仓库迁移,包括所有的分支、标签、日志
- 浏览器展示CSS伪类的动画和过渡效果应用
- 关于Romoting又一例
- thinkphp 6.x 5.x nginx php fpm 配置
- Windows10 LTSB/LTSC版安装应用商店与UWP
- 代理模式,明星经纪人--Java
- 微信小程序开发详细步骤解决方案
- 网络攻防原理及应用 知识梳理
- 波恩大学癫痫脑电和波士顿儿童医院脑电信号数据集下载
- 实战:垃圾站建站大法 疯狂掠夺百度流量
热门文章
- 英国电信移除华为设备后,多家运营商继续与华为合作,并达成20亿英镑协议...
- python中对两个 list 求交集,并集和差集
- 赛门铁克调研发现越来越多的物联网设备被用于实施DDoS攻击
- 寻路之 A* 搜寻算法
- jenkins slave problem :Unsupported major.minor version 52.0
- Android Robolectric 加载运行本地 So 动态库
- Poj(2225),三维BFS
- Android ANT多渠道打包
- 红杉千万美元投资壁虎烘热游戏内置广告
- .Net FSO简单小结(简单到不能再简单了)