使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 截取字符串 分别适合GB2312和UTF8编码情况
Feb 12 PHP
php统计文件大小,以GB、MB、KB、B输出
May 29 PHP
PHP 获取远程网页内容的代码(fopen,curl已测)
Jun 06 PHP
Linux下实现PHP多进程的方法分享
Aug 16 PHP
php curl 伪造IP来源的实例代码
Nov 01 PHP
php利用腾讯ip分享计划获取地理位置示例分享
Jan 20 PHP
PHP获取ip对应地区和使用网络类型的方法
Mar 11 PHP
php使用Jpgraph绘制柱形图的方法
Jun 10 PHP
PHP中如何判断exec函数执行成功?
Aug 04 PHP
php 获取文件行数的方法总结
Oct 11 PHP
Laravel框架路由和控制器的绑定操作方法
Jun 12 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
win2003服务器使用WPS的COM组件的一些问题解决方法
2012/01/11 PHP
记录PHP错误日志 display_errors与log_errors的区别
2012/10/09 PHP
Apache服务器下防止图片盗链的办法
2015/07/06 PHP
PHP用户验证和标签推荐的简单使用
2016/10/31 PHP
PHP在linux上执行外部命令的方法
2017/02/06 PHP
Laravel 实现数据软删除功能
2019/08/21 PHP
Aster vs KG BO3 第三场2.19
2021/03/10 DOTA
chrome原生方法之数组
2011/11/30 Javascript
jquery validation验证身份证号,护照,电话号码,email(实例代码)
2013/11/06 Javascript
jQuery获取和设置表单元素的方法
2014/02/14 Javascript
原生js实现移动端瀑布流式代码示例
2015/12/18 Javascript
Javascript中 toFixed四舍六入方法
2017/08/21 Javascript
Vue实现动态添加或者删除对象和对象数组的操作方法
2018/09/21 Javascript
vue axios请求频繁时取消上一次请求的方法
2018/11/10 Javascript
深入koa-bodyparser原理解析
2019/01/16 Javascript
关于layui表单中按钮自动提交的解决方法
2019/09/09 Javascript
多个Vue项目部署到服务器的步骤记录
2020/10/22 Javascript
python获取糗百图片代码实例
2013/12/18 Python
使用paramiko远程执行命令、下发文件的实例
2017/10/01 Python
tensorflow实现简单的卷积神经网络
2018/05/24 Python
Python爬虫基础之XPath语法与lxml库的用法详解
2018/09/13 Python
Python找出微信上删除你好友的人脚本写法
2018/11/01 Python
python实现从pdf文件中提取文本,并自动翻译的方法
2018/11/28 Python
selenium在执行phantomjs的API并获取执行结果的方法
2018/12/17 Python
pyqt5 实现 下拉菜单 + 打开文件的示例代码
2019/06/20 Python
python实现递归查找某个路径下所有文件中的中文字符
2019/08/31 Python
使用Python进行中文繁简转换的实现代码
2019/10/18 Python
Python 实现图片转字符画的示例(静态图片,gif皆可)
2020/11/05 Python
应届毕业生求职信范例分享
2013/12/17 职场文书
自我评价范文
2013/12/22 职场文书
本科生的职业生涯规划范文
2014/01/09 职场文书
植树节活动总结
2014/04/30 职场文书
学习群众路线的心得体会
2014/11/05 职场文书
高中生毕业评语
2014/12/30 职场文书
2015国庆节放假通知范文
2015/07/30 职场文书
Python快速实现一键抠图功能的全过程
2021/06/29 Python