使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 相关文章推荐
Content-type 的说明
Oct 09 PHP
php SQL之where语句生成器
Mar 24 PHP
php 调用远程url的六种方法小结
Nov 02 PHP
php打造属于自己的MVC框架
Mar 07 PHP
PHP5.5在windows安装使用memcached服务端的方法
Apr 16 PHP
PHP获取数组中重复最多的元素的实现方法
Nov 11 PHP
PHP中使用数组指针函数操作数组示例
Nov 19 PHP
php删除指定目录的方法
Apr 03 PHP
php视频拍照上传头像功能实现代码分享
Oct 08 PHP
Thinkphp5行为使用方法汇总
Dec 21 PHP
Yii2.0实现的批量更新及批量插入功能示例
Jan 29 PHP
PHP pthreads v3在centos7平台下的安装与配置操作方法
Feb 21 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函数之error_reporting(E_ALL ^ E_NOTICE)详细说明
2011/07/01 PHP
php使用异或实现的加密解密实例
2013/09/04 PHP
PHP之autoload运行机制实例分析
2014/08/28 PHP
PHP rmdir()函数的用法总结
2019/07/02 PHP
JavaScript Tips 使用DocumentFragment加快DOM渲染速度
2010/06/28 Javascript
Dreamweaver jQuery智能提示插件,支持版本提示,支持1.6api
2011/07/31 Javascript
基于jquery ajax 用户无刷新登录方法详解
2012/04/28 Javascript
JS如何将数字类型转化为没3个一个逗号的金钱格式
2014/01/27 Javascript
JS判断文本框内容改变事件的简单实例
2014/03/07 Javascript
javascript检测flash插件是否被禁用的方法
2016/01/14 Javascript
Bootstrap每天必学之级联下拉菜单
2016/03/27 Javascript
关于JSON与JSONP简单总结
2016/08/16 Javascript
移动端滑动插件Swipe教程
2016/10/16 Javascript
JS常见简单正则表达式验证功能小结【手机,地址,企业税号,金额,身份证等】
2017/01/22 Javascript
JS获得一个对象的所有属性和方法实例
2017/02/21 Javascript
vue实现导航栏效果(选中状态刷新不消失)
2017/12/13 Javascript
微信小程序自定义模态弹窗组件详解
2019/12/24 Javascript
python二叉树遍历的实现方法
2013/11/21 Python
python抓取网页时字符集转换问题处理方案分享
2014/06/19 Python
CentOS中使用virtualenv搭建python3环境
2015/06/08 Python
K-means聚类算法介绍与利用python实现的代码示例
2017/11/13 Python
Python多进程库multiprocessing中进程池Pool类的使用详解
2017/11/24 Python
详解Python网络框架Django和Scrapy安装指南
2019/04/01 Python
解决pycharm 工具栏Tool中找不到Run manager.py Task的问题
2019/07/01 Python
python @propert装饰器使用方法原理解析
2019/12/25 Python
Python tkinter模版代码实例
2020/02/05 Python
基于selenium及python实现下拉选项定位select
2020/07/22 Python
Vs Code中8个好用的python 扩展插件
2020/10/12 Python
html5菜单折纸效果
2014/04/22 HTML / CSS
攀岩、滑雪、徒步旅行装备:Black Diamond Equipment
2019/08/16 全球购物
工商治理实习生的自我评价
2014/01/15 职场文书
2014年纪委工作总结
2014/12/05 职场文书
干部年终考核评语
2015/01/04 职场文书
销售督导岗位职责
2015/04/10 职场文书
Java 超详细讲解hashCode方法
2022/04/07 Java/Android