使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产生随机字符串函数
Dec 06 PHP
php $_ENV为空的原因分析
Jun 01 PHP
php下封装较好的数字分页方法
Nov 23 PHP
PHP set_error_handler()函数使用详解(示例)
Nov 12 PHP
php计算指定目录下文件占用空间的方法
Mar 13 PHP
PHP+shell实现多线程的方法
Jul 01 PHP
浅谈PHP中的
Apr 23 PHP
PhpStorm terminal无法输入命令的解决方法
Oct 09 PHP
如何修改yii2.0自带的user表为其它的表
Aug 01 PHP
PHP实现唤起微信支付功能
Feb 18 PHP
使用composer 安装 laravel框架的方法图文详解
Aug 02 PHP
使用laravel的migrate创建数据表的方法
Sep 30 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
星际争霸 Starcraft 游戏介绍
2020/03/14 星际争霸
解析PHP提交后跳转
2013/06/23 PHP
使用Discuz关键词服务器实现PHP中文分词
2014/03/11 PHP
使用PHP函数scandir排除特定目录
2014/06/12 PHP
php ActiveMQ的安装与使用方法图文教程
2020/02/23 PHP
Jquery Select操作方法集合脚本之家特别版
2010/05/17 Javascript
通过Jscript中@cc_on 语句识别IE浏览器及版本的代码
2011/05/07 Javascript
js调试系列 源码定位与调试[基础篇]
2014/06/18 Javascript
javascript的document.referrer浏览器支持、失效情况总结
2014/07/18 Javascript
jQuery使用prepend()方法在元素前添加内容用法实例
2015/03/26 Javascript
微信企业号开发之微信考勤Cookies的使用
2015/09/11 Javascript
jQuery表格插件datatables用法汇总
2016/03/29 Javascript
js正则表达式注册页面表单验证
2016/10/11 Javascript
深入理解JavaScript 参数按值传递
2017/05/24 Javascript
angularjs+bootstrap实现自定义分页的实例代码
2017/06/19 Javascript
简单实现js轮播图效果
2017/07/14 Javascript
vuex 解决报错this.$store.commit is not a function的方法
2018/12/17 Javascript
Vue+Element实现动态生成新表单并添加验证功能
2019/05/23 Javascript
jQuery子选择器与可见性选择器实例分析
2019/06/28 jQuery
vue 路由守卫(导航守卫)及其具体使用
2020/02/25 Javascript
[01:37]DOTA2超级联赛专访ChuaN 传奇般的电竞之路
2013/06/19 DOTA
在Python中使用元类的教程
2015/04/28 Python
python中正则表达式的使用方法
2018/02/25 Python
python3如何将docx转换成pdf文件
2018/03/23 Python
python实现多线程网页下载器
2018/04/15 Python
python自动化测试之如何解析excel文件
2019/06/27 Python
基于Html5实现的语音搜索功能
2019/05/13 HTML / CSS
奥地利票务门户网站:oeticket.com
2019/12/31 全球购物
妇科医生自荐信
2013/11/05 职场文书
主题党日活动总结
2014/07/08 职场文书
竞选大队干部演讲稿
2014/09/11 职场文书
2014年实验室工作总结
2014/12/03 职场文书
搞笑婚前保证书
2015/02/28 职场文书
英雄儿女观后感
2015/06/09 职场文书
Mysql中 unique列插入重复值该怎么解决呢
2021/05/26 MySQL
python热力图实现的完整实例
2022/06/25 Python