使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 相关文章推荐
一键删除顽固的空文件夹 软件下载
Jan 26 PHP
收集的PHP中与数组相关的函数
Mar 22 PHP
PHP 单引号与双引号的区别
Nov 24 PHP
深入理解PHP原理之Session Gc的一个小概率Notice
Apr 12 PHP
组合算法的PHP解答方法
Feb 04 PHP
PHP重定向的3种方式
Mar 07 PHP
php中有关字符串的4个函数substr、strrchr、strstr、ereg介绍和使用例子
Apr 24 PHP
php中mail函数发送邮件失败的解决方法
Dec 24 PHP
php文件缓存类用法实例分析
Apr 22 PHP
深入理解php printf() 输出格式化的字符串
May 23 PHP
Yii配置与使用memcached缓存的方法
Jul 13 PHP
PHP实现链式操作的三种方法详解
Nov 16 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
初识PHP中的Swoole
2016/04/05 PHP
PHP删除数组中指定值的元素常用方法实例分析【4种方法】
2018/08/21 PHP
php判断IP地址是否在多个IP段内
2020/08/18 PHP
js 判断一个元素是否在页面中存在
2012/12/27 Javascript
javascript学习笔记(一)基础知识
2014/09/30 Javascript
innerHTML动态添加html代码和脚本兼容多个浏览器
2014/10/11 Javascript
js与css实现弹出层覆盖整个页面的方法
2014/12/13 Javascript
javascript实现表格排序 编辑 拖拽 缩放
2015/01/02 Javascript
jQuery中die()方法用法实例
2015/01/19 Javascript
js实现时间显示几天前、几小时前或者几分钟前的方法集锦
2015/05/29 Javascript
简单对比分析JavaScript中的apply,call与this的使用
2015/12/04 Javascript
全面解析Bootstrap中form、navbar的使用方法
2016/05/30 Javascript
详解AngularJS如何实现跨域请求
2016/08/22 Javascript
基于Javascript倒计时效果
2016/12/22 Javascript
jquery 实现复选框的全选操作实例代码
2017/01/24 Javascript
详解webpack异步加载业务模块
2017/06/23 Javascript
微信小程使用swiper组件实现图片轮播切换显示功能【附源码下载】
2017/12/12 Javascript
Vue数据监听方法watch的使用
2018/03/28 Javascript
详解Vue源码学习之双向绑定
2019/04/10 Javascript
微信小程序开发注意指南和优化实践(小结)
2019/06/21 Javascript
基于VUE的v-charts的曲线显示功能
2019/10/01 Javascript
[02:53]2018年度DOTA2最佳战队-完美盛典
2018/12/17 DOTA
ubuntu系统下 python链接mysql数据库的方法
2017/01/09 Python
Python生成器以及应用实例解析
2018/02/08 Python
django多个APP的urls设置方法(views重复问题解决)
2019/07/19 Python
TensorFlow 读取CSV数据的实例
2020/02/05 Python
Python 私有属性和私有方法应用场景分析
2020/06/19 Python
python音频处理的示例详解
2020/12/23 Python
英国排名第一的礼品体验公司:Red Letter Days
2018/08/16 全球购物
竞选部长演讲稿
2014/04/26 职场文书
汽车技术服务与贸易专业求职信
2014/07/20 职场文书
大学生创业事迹材料
2014/12/30 职场文书
解除劳动合同通知书范本
2015/04/16 职场文书
2015年董事长秘书工作总结
2015/07/23 职场文书
Python 如何安装Selenium
2021/05/06 Python
手把手教你实现PyTorch的MNIST数据集
2021/06/28 Python