使ecshop模板中可引用常量的实现方法


Posted in PHP onJune 02, 2011

比如$smarty.const.'常量',这个就不能用。
其实模板引擎原理上并不复杂,只是把一些模板标签替换为php中的函数,变量,语法结构罢了。
这次要在ecshop模板中加入引用常量的功能,只需在函数make_var()中加入两行代码

function make_var($val) 
{ 
if (strrpos($val, '.') === false) 
{ 
if (isset($this->_var[$val]) && isset($this->_patchstack[$val])) 
{ 
$val = $this->_patchstack[$val]; 
} 
$p = '$this->_var[\'' . $val . '\']'; 
} 
else 
{ 
$t = explode('.', $val); 
$_var_name = array_shift($t); 
if (isset($this->_var[$_var_name]) && isset($this->_patchstack[$_var_name])) 
{ 
$_var_name = $this->_patchstack[$_var_name]; 
} 
if ($_var_name == 'smarty') 
{ 
if($t[0] == 'const'){ 
return strtoupper($t[1]); 
} 
$p = $this->_compile_smarty_ref($t); 
} 
else 
{ 
$p = '$this->_var[\'' . $_var_name . '\']'; 
} 
foreach ($t AS $val) 
{ 
$p.= '[\'' . $val . '\']'; 
} 
} 
return $p; 
}

其中21-23行是新加的,这让就可在模板文件中通过 {$smarty.const.常量}来引用php中定义的常量了
21 if($t[0] == 'const'){ 
22 return strtoupper($t[1]); 
23 }
PHP 相关文章推荐
第1次亲密接触PHP5(2)
Oct 09 PHP
简单介绍下 PHP5 中引入的 MYSQLI的用途
Mar 19 PHP
可以在线执行PHP代码包装修正版
Mar 15 PHP
PHP中集成PayPal标准支付的实现方法分享
Feb 06 PHP
wamp下修改mysql访问密码的解决方法
May 07 PHP
一个严格的PHP Session会话超时时间设置方法
Jun 10 PHP
php开启与关闭错误提示适用于没有修改php.ini的权限
Oct 16 PHP
PHP实现简单的新闻发布系统实例
Jul 28 PHP
php在数据库抽象层简单使用PDO的方法
Nov 03 PHP
PHP执行linux命令常用函数汇总
Feb 02 PHP
详解ThinkPHP3.2.3验证码显示、刷新、校验
Dec 29 PHP
php7安装mongoDB扩展的方法分析
Aug 02 PHP
php 数组使用详解 推荐
Jun 02 #PHP
php smarty 二级分类代码和模版循环例子
Jun 01 #PHP
PHP 八种基本的数据类型小结
Jun 01 #PHP
Apache2中实现多网站域名绑定的实现方法
Jun 01 #PHP
php自动获取字符串编码函数mb_detect_encoding
May 31 #PHP
比较时间段一与时间段二是否有交集的php函数
May 31 #PHP
实用PHP会员权限控制实现原理分析
May 29 #PHP
You might like
jquery+php实现导出datatables插件数据到excel的方法
2015/07/06 PHP
CI框架中类的自动加载问题分析
2016/11/21 PHP
jQuery选择没有colspan属性的td的代码
2010/07/06 Javascript
Javascript 倒计时源代码.(时.分.秒) 详细注释版
2011/05/09 Javascript
浅析JS刷新框架中的其他页面 && JS刷新窗口方法汇总
2013/07/08 Javascript
js window.print实现打印特定控件或内容
2013/09/16 Javascript
JS中判断字符串中出现次数最多的字符及出现的次数的简单实例
2016/06/03 Javascript
使用BootStrapValidator完成前端输入验证
2016/09/28 Javascript
Node.js的环境安装配置(使用nvm方式)
2016/10/11 Javascript
详解Angular.js指令中scope类型的几种特殊情况
2017/02/21 Javascript
JS实现从对象获取对象中单个键值的方法示例
2019/06/05 Javascript
详解elementui之el-image-viewer(图片查看器)
2019/08/30 Javascript
关于在LayUI中使用AJAX提交巨坑记录
2019/10/25 Javascript
VUEX-action可以修改state吗
2019/11/19 Javascript
Python爬虫实例_城市公交网络站点数据的爬取方法
2018/01/10 Python
python实现学生信息管理系统
2020/04/05 Python
Python3爬虫学习入门教程
2018/12/11 Python
基于python的ini配置文件操作工具类
2019/04/24 Python
Falsk 与 Django 过滤器的使用与区别详解
2019/06/04 Python
Django密码存储策略分析
2020/01/09 Python
Python如何访问字符串中的值
2020/02/09 Python
Python单链表原理与实现方法详解
2020/02/22 Python
Python实现电视里的5毛特效实例代码详解
2020/05/15 Python
CSS教程:CSS3圆角属性
2009/04/02 HTML / CSS
HTML5移动开发图片压缩上传功能
2016/11/09 HTML / CSS
W3C公布最新的HTML5标准草案
2008/10/17 HTML / CSS
美国知名的在线旅游服务网站:Priceline
2016/07/23 全球购物
大学生秋游活动方案
2014/02/17 职场文书
上课迟到检讨书
2014/02/19 职场文书
yy司仪主持词
2014/03/22 职场文书
经济国贸专业求职信
2014/06/18 职场文书
亲子运动会的活动方案
2014/08/17 职场文书
选调生挂职锻炼工作总结
2015/10/23 职场文书
python3使用diagrams绘制架构图的步骤
2021/04/08 Python
Python实现DBSCAN聚类算法并样例测试
2021/06/22 Python
Python读取和写入Excel数据
2022/04/20 Python