使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 相关文章推荐
隐藏X-Space个人空间下方版权方法隐藏X-Space个人空间标题隐藏X-Space个人空间管理版权方法
Feb 22 PHP
使用php重新实现PHP脚本引擎内置函数
Mar 06 PHP
在任意字符集下正常显示网页的方法二(续)
Apr 01 PHP
实用函数3
Nov 08 PHP
PHP 字符串分割和比较
Oct 06 PHP
php中设置多级目录session的问题
Aug 08 PHP
PHP简单实现“相关文章推荐”功能的方法
Jul 19 PHP
PHP抓取及分析网页的方法详解
Apr 26 PHP
Laravel搭建后台登录系统步骤详解
Jul 26 PHP
PHP单例模式定义与使用实例详解
Feb 06 PHP
php7安装yar扩展的方法详解
Aug 03 PHP
PHP实现的装箱算法示例
Jun 23 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
深入解析fsockopen与pfsockopen的区别
2013/07/05 PHP
php实现在多维数组中查找特定value的方法
2015/07/29 PHP
Iframe自适应高度绝对好使的代码 兼容IE,遨游,火狐
2011/01/27 Javascript
Javascript事件实例详解
2013/11/06 Javascript
JavaScript两种跨域技术全面介绍
2014/04/16 Javascript
jQuery中last()方法用法实例
2015/01/06 Javascript
简介JavaScript中的italics()方法的使用
2015/06/08 Javascript
js实现卡片式项目管理界面UI设计效果
2015/12/08 Javascript
BootStrap响应式导航条实例介绍
2016/05/06 Javascript
jQuery简单实现点击文本框复制内容到剪贴板上的方法
2016/08/01 Javascript
微信小程序 input输入框详解及简单实例
2017/01/10 Javascript
全站最详细的Vuex教程
2018/04/13 Javascript
jquery获取input输入框中的值
2019/11/13 jQuery
[01:01:14]完美世界DOTA2联赛PWL S2 SZ vs Rebirth 第一场 11.21
2020/11/23 DOTA
Python中的CURL PycURL使用例子
2014/06/01 Python
以Python的Pyspider为例剖析搜索引擎的网络爬虫实现方法
2015/03/30 Python
Tornado协程在python2.7如何返回值(实现方法)
2017/06/22 Python
python 返回列表中某个值的索引方法
2018/11/07 Python
Python函数的定义方式与函数参数问题实例分析
2019/12/26 Python
python将logging模块封装成单独模块并实现动态切换Level方式
2020/05/12 Python
基于nexus3配置Python仓库过程详解
2020/06/15 Python
荷兰男士时尚网上商店:Suitable
2017/12/25 全球购物
德国专业木制品经销商:Holz-Direkt24
2019/12/26 全球购物
JAVA和C++的区别
2013/10/06 面试题
求职自荐信格式
2013/12/04 职场文书
上班玩手机检讨书
2014/02/17 职场文书
高中军训感想300字
2014/03/04 职场文书
办公室主任岗位承诺书
2014/05/29 职场文书
社区清明节活动总结
2014/07/04 职场文书
美术第二课堂活动总结
2014/07/08 职场文书
投诉书格式范本
2015/07/02 职场文书
交通安全教育心得体会
2016/01/15 职场文书
如何将numpy二维数组中的np.nan值替换为指定的值
2021/05/14 Python
vue点击弹窗自动触发点击事件的解决办法(模拟场景)
2021/05/25 Vue.js
mybatis 解决从列名到属性名的自动映射失败问题
2021/06/30 Java/Android
Python循环之while无限迭代
2022/04/30 Python