使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 取得瑞年与平年的天数的代码
Aug 10 PHP
PHP获取MAC地址的函数代码
Sep 11 PHP
php编写的一个E-mail验证类
Mar 25 PHP
基于linnux+phantomjs实现生成图片格式的网页快照
Apr 15 PHP
PHP通过API获取手机号码归属地
May 28 PHP
WordPress用户登录框密码的隐藏与部分显示技巧
Dec 31 PHP
Yii中表单用法实例详解
Jan 05 PHP
CI(CodeIgniter)框架视图中加载视图的方法
Mar 24 PHP
PHP封装的XML简单操作类完整实例
Nov 13 PHP
laravel实现简单用户权限的示例代码
May 28 PHP
PHP实现提取多维数组指定一列的方法总结
Dec 04 PHP
Yii框架 session 数据库存储操作方法示例
Nov 18 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
8个必备的PHP功能开发
2015/10/02 PHP
Javascript 解疑
2009/11/11 Javascript
jquery关于图形报表的运用实现代码
2011/01/06 Javascript
JS实现鼠标箭头变成一个燃烧烛光效果的方法
2015/02/28 Javascript
解决jQuery ajax请求在IE6中莫名中断的问题
2016/06/20 Javascript
JS实现的系统调色板完整实例
2016/12/21 Javascript
Vue.js自定义指令的用法与实例解析
2017/01/18 Javascript
javascript 面向对象function详解及实例代码
2017/02/28 Javascript
原生JS仿QQ阅读点击展开、收起效果
2017/03/08 Javascript
nodejs搭建本地http服务器教程
2017/03/13 NodeJs
Vue2.0 axios前后端登陆拦截器(实例讲解)
2017/10/27 Javascript
vue 2.8.2版本配置刚进入时候的默认页面方法
2018/09/21 Javascript
4 种滚动吸顶实现方式的比较
2019/04/09 Javascript
VUE的history模式下除了index外其他路由404报错解决办法
2019/08/21 Javascript
layui layer select 选择被遮挡的解决方法
2019/09/21 Javascript
layui动态渲染生成左侧3级菜单的方法(根据后台返回数据)
2019/09/23 Javascript
微信小程序 自定义弹窗实现过程(附代码)
2019/12/05 Javascript
Angular封装表单控件及思想总结
2019/12/11 Javascript
[44:30]完美世界DOTA2联赛PWL S2 GXR vs Magma 第一场 11.25
2020/11/26 DOTA
Python 中 function(#) (X)格式 和 (#)在Python3.*中的注意事项
2018/11/30 Python
python是否适合网页编程详解
2019/10/04 Python
python读写文件write和flush的实现方式
2020/02/21 Python
Python3+RIDE+RobotFramework自动化测试框架搭建过程详解
2020/09/23 Python
CSS3教程(10):CSS3 HSL声明设置颜色
2009/04/02 HTML / CSS
Blancsom美国/加拿大:服装和生活用品供应商
2018/07/27 全球购物
英国领先的高级美容和在线皮肤诊所:Face the Future
2020/06/17 全球购物
请描述一下”is a”关系和”has a”关系
2015/02/03 面试题
介绍一下XMLHttpRequest对象的常用方法和属性
2013/05/24 面试题
幼儿如何来做好自我评价
2013/11/05 职场文书
毕业生自我鉴定
2013/11/05 职场文书
公司经理聘任书
2014/03/29 职场文书
公司周年庆典标语
2014/10/07 职场文书
期末个人总结范文
2015/02/13 职场文书
银行求职信范文怎么写
2015/03/20 职场文书
详解redis分布式锁的这些坑
2021/05/19 Redis
Python NumPy灰度图像的压缩原理讲解
2021/08/04 Python