使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 相关文章推荐
自动跳转中英文页面
Oct 09 PHP
在PHP中使用灵巧的体系结构
Oct 09 PHP
PHP n个不重复的随机数生成代码
Jun 23 PHP
在php中判断一个请求是ajax请求还是普通请求的方法
Jun 28 PHP
apache mysql php 源码编译使用方法
May 03 PHP
php调用c接口无错版介绍
Mar 11 PHP
getimagesize获取图片尺寸实例
Nov 15 PHP
php通过array_unshift函数添加多个变量到数组前端的方法
Mar 18 PHP
php图片上传类 附调用方法
May 15 PHP
PHP结合Ueditor并修改图片上传路径
Oct 16 PHP
thinkphp5.1 文件引入路径问题及注意事项
Jun 13 PHP
详解关于php的xdebug配置(编辑器vscode)
Jan 29 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
ThinkPHP里用U方法调用js文件实例
2015/06/18 PHP
动手学习无线电
2021/03/10 无线电
取键盘键位ASCII码的网页
2007/07/30 Javascript
jquery 操作DOM案例代码分享
2012/04/05 Javascript
两个listbox实现选项的添加删除和搜索
2013/03/01 Javascript
JQuery实现的购物车功能(可以减少或者添加商品并自动计算价格)
2015/01/13 Javascript
JS模拟键盘打字效果的方法
2015/08/05 Javascript
基于JS分页控件实现简单美观仿淘宝分页按钮效果
2016/11/07 Javascript
ES6新特性八:async函数用法实例详解
2017/04/21 Javascript
node.js遍历目录的方法示例
2018/08/01 Javascript
基于Vue实现图片在指定区域内移动的思路详解
2018/11/11 Javascript
vue2.0结合Element-ui实战案例
2019/03/06 Javascript
vue基础之data存储数据及v-for循环用法示例
2019/03/08 Javascript
使用webpack编译es6代码的方法步骤
2019/04/28 Javascript
jsonp格式前端发送和后台接受写法的代码详解
2019/11/07 Javascript
Layer UI表格列日期格式化及取消自动填充日期的实现方法
2020/05/10 Javascript
vue中可编辑树状表格的实现代码
2020/10/31 Javascript
[01:19:54]DOTA2上海特级锦标赛主赛事日 - 2 败者组第二轮#1Alliance VS EHOME
2016/03/03 DOTA
[48:11]完美世界DOTA2联赛 Magma vs GXR 第二场 11.07
2020/11/10 DOTA
对python多线程中互斥锁Threading.Lock的简单应用详解
2019/01/11 Python
Python3.4解释器用法简单示例
2019/03/22 Python
如何获取Python简单for循环索引
2019/11/21 Python
解决Python Matplotlib绘图数据点位置错乱问题
2020/05/16 Python
python实现按日期归档文件
2021/01/30 Python
html5中canvas学习笔记2-判断浏览器是否支持canvas
2013/01/06 HTML / CSS
天游软件面试
2013/11/23 面试题
用Java语言将一个键盘输入的数字转化成中文输出
2013/01/25 面试题
学习十八大报告感言
2014/02/28 职场文书
大专生求职信
2014/06/29 职场文书
教师群众路线教育实践活动学习笔记
2014/11/05 职场文书
承德避暑山庄导游词
2015/02/03 职场文书
上班迟到检讨书
2015/05/06 职场文书
2015年安全生产月工作总结
2015/07/27 职场文书
2016学习医德医风心得体会
2016/01/25 职场文书
Golang 实现WebSockets
2022/04/24 Golang
Python保存并浏览用户的历史记录
2022/04/29 Python