使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 和 MYSQL
Oct 09 PHP
Php Mssql操作简单封装支持存储过程
Dec 11 PHP
深入PHP操作MongoDB的技术总结
Jun 02 PHP
Win下如何安装PHP的APC拓展
Aug 07 PHP
PHP读取文件内容后清空文件示例代码
Mar 18 PHP
PHP实现删除非站内外部链接实例代码
Jun 17 PHP
php获取twitter最新消息的方法
Apr 14 PHP
PHP实现多文件上传的方法
Jul 08 PHP
PHP使用MPDF类生成PDF的方法
Dec 08 PHP
10个值得深思的PHP面试题
Nov 14 PHP
ubutu 16.04环境下,PHP与mysql数据库,网页登录验证实例讲解
Jul 20 PHP
PHP实现Markdown文章上传到七牛图床的实例内容
Feb 11 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操作xml入门之xml基本介绍及xml标签元素
2015/01/23 PHP
php文件夹的创建与删除方法
2015/01/24 PHP
php在数组中查找指定值的方法
2015/03/17 PHP
php中smarty实现多模版网站的方法
2015/06/11 PHP
浅谈PHP中静态方法和非静态方法的相互调用
2016/10/04 PHP
Prototype使用指南之hash.js
2007/01/10 Javascript
js 回车提交表单两种实现方法
2012/12/31 Javascript
jquery中checkbox全选失效的解决方法
2014/12/26 Javascript
在Google 地图上实现做的标记相连接
2015/01/05 Javascript
理解javascript中的MVC模式
2016/01/28 Javascript
JS组件Bootstrap实现图片轮播效果
2016/05/16 Javascript
switch语句的妙用(必看篇)
2016/10/03 Javascript
AngularJS定时器的使用与移除操作方法【interval与timeout】
2016/12/14 Javascript
AngularJS双向绑定和依赖反转实例详解
2017/04/15 Javascript
详解通过JSON数据使用VUE.JS
2017/05/26 Javascript
9种使用Chrome Firefox 自带调试工具调试javascript技巧
2017/12/22 Javascript
iview中Select 选择器多选校验方法
2018/03/15 Javascript
微信小程序使用Vant Weapp组件库的方法步骤
2019/08/01 Javascript
jQuery实现可以计算进制转换的计算器
2020/10/19 jQuery
Django1.7+python 2.78+pycharm配置mysql数据库教程
2014/11/18 Python
python中pass语句用法实例分析
2015/04/30 Python
python基于http下载视频或音频
2018/06/20 Python
解决python通过cx_Oracle模块连接Oracle乱码的问题
2018/10/18 Python
python+opencv实现摄像头调用的方法
2019/06/22 Python
用python给自己做一款小说阅读器过程详解
2019/07/11 Python
纽约香氛品牌:NEST Fragrance
2018/10/15 全球购物
请问如下代码执行后a和b的值分别是什么
2016/05/05 面试题
网上常见的一份Linux面试题(多项选择部分)
2014/09/09 面试题
土木工程专业个人求职信
2013/12/05 职场文书
护士进修自我鉴定
2014/02/07 职场文书
《九寨沟》教学反思
2014/04/08 职场文书
学生会主席演讲稿
2014/04/25 职场文书
党员批评与自我批评总结
2014/10/15 职场文书
2015年事业单位办公室文员工作总结
2015/04/24 职场文书
最新农村养殖致富:资金投入较低的创业项目有哪些?
2019/09/26 职场文书
Python如何识别银行卡卡号?
2021/06/10 Python