使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 相关文章推荐
PHP的面向对象编程
Oct 09 PHP
PHP隐形一句话后门,和ThinkPHP框架加密码程序(base64_decode)
Nov 02 PHP
PHP图片处理类 phpThumb参数用法介绍
Mar 11 PHP
php 多关键字 高亮显示实现代码
Apr 23 PHP
ThinkPHP 连接Oracle数据库的详细教程[全]
Jul 16 PHP
php使用date和strtotime函数输出指定日期的方法
Nov 14 PHP
解决php的“It is not safe to rely on the system’s timezone settings”问题
Oct 08 PHP
PHP可变变量学习小结
Nov 29 PHP
WordPress中转义HTML与过滤链接的相关PHP函数使用解析
Dec 22 PHP
PHP获取路径和目录的方法总结【必看篇】
Mar 04 PHP
使用phpQuery获取数组的实例
Mar 13 PHP
laravel ORM 只开启created_at的几种方法总结
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
雄兵连:第三季确定会出,不过时间未定,鹤熙是第三季的主角!
2020/03/13 国漫
Maps Javascript
2007/01/22 Javascript
JavaScript对象链式操作代码(jquery)
2010/07/04 Javascript
JavaScript 更严格的相等 [译]
2012/09/20 Javascript
JQuery for与each性能比较分析
2013/05/14 Javascript
js调用css属性写法
2013/09/21 Javascript
js实现数组去重、判断数组以及对象中的内容是否相同
2013/11/29 Javascript
JavaScript计算某一天是星期几的方法
2015/08/05 Javascript
JavaScript易错知识点整理
2016/12/05 Javascript
JS利用cookies设置每隔24小时弹出框
2017/04/20 Javascript
详谈for循环里面的break和continue语句
2017/07/20 Javascript
原生JS获取元素的位置与尺寸实现方法
2017/10/18 Javascript
[02:20]DOTA2亚洲邀请赛 IG战队出场宣传片
2015/02/07 DOTA
Python获取Linux系统下的本机IP地址代码分享
2014/11/07 Python
Python求算数平方根和约数的方法汇总
2016/03/09 Python
Python用threading实现多线程详解
2017/02/03 Python
Python管理Windows服务小脚本
2018/03/12 Python
Python文件如何引入?详解引入Python文件步骤
2018/12/10 Python
Python 脚本获取ES 存储容量的实例
2018/12/27 Python
python中正则表达式与模式匹配
2019/05/07 Python
pycharm配置git(图文教程)
2019/08/16 Python
python等差数列求和公式前 100 项的和实例
2020/02/25 Python
Jupyter notebook快速入门教程(推荐)
2020/05/18 Python
HTML5添加禁止缩放功能
2017/11/03 HTML / CSS
世嘉游戏英国官方商店:SEGA Shop UK
2019/09/20 全球购物
毕业生精彩的自我评价分享
2013/10/06 职场文书
快递业务员岗位职责
2014/01/06 职场文书
医校毕业生自我鉴定
2014/01/25 职场文书
创先争优活动方案
2014/02/12 职场文书
护理专科自荐书范文
2014/02/18 职场文书
文案策划求职信
2014/04/14 职场文书
离婚协议书该怎么写
2014/10/04 职场文书
员工辞职信范文
2015/03/02 职场文书
浅析MongoDB之安全认证
2021/06/26 MongoDB
浅析Python中的随机采样和概率分布
2021/12/06 Python
开发者首先否认《遗弃》被取消的传言
2022/04/11 其他游戏