使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 相关文章推荐
Access数据库导入Mysql的方法之一
Oct 09 PHP
dedecms 制作模板中使用的全局标记图文教程
Mar 11 PHP
php split汉字
Jun 05 PHP
php setcookie(name, value, expires, path, domain, secure) 参数详解
Jun 28 PHP
php中用socket模拟http中post或者get提交数据的示例代码
Aug 08 PHP
php面向对象中static静态属性与方法的内存位置分析
Feb 08 PHP
PHP时间戳格式全部汇总 (获取时间、时间戳)
Jun 13 PHP
THinkPHP获取客户端IP与IP地址查询的方法
Nov 14 PHP
PHP使用PHPExcel实现批量上传到数据库的方法
Jun 08 PHP
PHP crypt()函数的用法讲解
Feb 15 PHP
Yii2框架控制器、路由、Url生成操作示例
May 27 PHP
自定义Laravel (monolog)日志位置,并增加请求ID的实现
Oct 17 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 程序员的调试技术小结
2009/11/15 PHP
php使用array_search函数实现数组查找的方法
2015/06/12 PHP
PHP获取二维数组中某一列的值集合
2015/12/25 PHP
谈谈php对接芝麻信用踩的坑
2016/12/01 PHP
YII2 实现多语言配置的方法分享
2017/01/11 PHP
PHP抽象类与接口的区别详解
2019/03/21 PHP
jQuery实现表单input中提示文字value随鼠标焦点移进移出而显示或隐藏的代码
2010/03/21 Javascript
在浏览器中获取当前执行的脚本文件名的代码
2011/07/19 Javascript
js中同步与异步处理的方法和区别总结
2013/12/25 Javascript
关于img的href和src取变量及赋值的方法
2014/04/28 Javascript
JavaScript获得表单target属性的方法
2015/04/02 Javascript
js实现做通讯录的索引滑动显示效果和滑动显示锚点效果
2017/02/18 Javascript
js实现文字跑马灯效果
2017/02/23 Javascript
React-Native中props具体使用详解
2017/09/04 Javascript
XMLHttpRequest对象_Ajax异步请求重点(推荐)
2017/09/28 Javascript
node.js中ws模块创建服务端和客户端,网页WebSocket客户端
2019/03/06 Javascript
使用Bootstrap做一个朝代历史表
2019/12/10 Javascript
Vue多选列表组件深入详解
2021/03/02 Vue.js
python文件读写操作与linux shell变量命令交互执行的方法
2015/01/14 Python
python在linux系统下获取系统内存使用情况的方法
2015/05/11 Python
python3之模块psutil系统性能信息使用
2018/05/30 Python
Python实现的微信好友数据分析功能示例
2018/06/21 Python
Django如何自定义分页
2018/09/25 Python
matplotlib.pyplot绘图显示控制方法
2019/01/15 Python
Python内置random模块生成随机数的方法
2019/05/31 Python
使用Python为中秋节绘制一块美味的月饼
2019/09/11 Python
TensorFlow的reshape操作 tf.reshape的实现
2020/04/19 Python
MONNIER Frères英国官网:源自巴黎女士奢侈品配饰电商平台
2018/12/06 全球购物
深圳茁壮笔试题
2015/05/28 面试题
小学红领巾中秋节广播稿
2014/01/13 职场文书
幼儿教师考核制度
2014/01/25 职场文书
经贸韩语专业大学生职业规划
2014/02/14 职场文书
人力资源部门的主要职能
2014/02/22 职场文书
出纳岗位职责范本
2015/03/31 职场文书
违纪开除通知书
2015/04/25 职场文书
Vite + React从零开始搭建一个开源组件库
2022/06/25 Javascript