使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计划任务之关闭浏览器后仍然继续执行的函数
Jul 22 PHP
php对大文件进行读取操作的实现代码
Jan 23 PHP
探讨php中header的用法详解
Jun 07 PHP
codeigniter框架The URI you submitted has disallowed characters错误解决方法
May 06 PHP
PHP获取客户端真实IP地址的5种情况分析和实现代码
Jul 08 PHP
将CMYK颜色值和RGB颜色相互转换的PHP代码
Jul 28 PHP
php实现mysql事务处理的方法
Dec 25 PHP
PHP封装的Twitter访问类实例
Jul 18 PHP
使用PHP免费发送定时短信的实例
Oct 24 PHP
PHP上传图片到数据库并显示的实例代码
Dec 20 PHP
php文件上传原理与实现方法详解
Dec 20 PHP
php使用redis的几种常见操作方式和用法示例
Feb 20 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
怎么使 Mysql 数据同步
2006/10/09 PHP
php获取服务器端mac和客户端mac的地址支持WIN/LINUX
2014/05/15 PHP
php安装dblib扩展,连接mssql的具体步骤
2017/03/02 PHP
基于ThinkPHP5框架使用QueryList爬取并存入mysql数据库操作示例
2019/05/25 PHP
thinkphp5.1框架实现格式化mysql时间戳为日期的方式小结
2019/10/10 PHP
php 多个变量指向同一个引用($b = &$a)用法分析
2019/11/13 PHP
PHP代码覆盖率统计详解
2020/07/22 PHP
jquery 可拖拽的窗体控件实现代码
2010/03/21 Javascript
在JavaScript中获取请求的URL参数
2010/12/22 Javascript
分享一个用Mootools写的鼠标滑过进度条改变进度值的实现代码
2011/12/12 Javascript
JS实现添加,替换,删除节点元素的方法
2016/06/30 Javascript
JavaScript设计模式之装饰者模式定义与应用示例
2018/07/25 Javascript
Vue头像处理方案小结
2018/07/26 Javascript
解决vue中监听input只能输入数字及英文或者其他情况的问题
2018/08/30 Javascript
详解mpvue中使用vant时需要注意的onChange事件的坑
2019/05/16 Javascript
重学JS之显示强制类型转换详解
2019/06/30 Javascript
Layui带搜索的下拉框的使用以及动态数据绑定方法
2019/09/28 Javascript
通过代码实例展示Python中列表生成式的用法
2015/03/31 Python
用Python实现一个简单的多线程TCP服务器的教程
2015/05/05 Python
python多维数组切片方法
2018/04/13 Python
Python 利用pydub库操作音频文件的方法
2019/01/09 Python
Python使用Chrome插件实现爬虫过程图解
2020/06/09 Python
五分钟学会怎么用python做一个简单的贪吃蛇
2021/01/12 Python
python des,aes,rsa加解密的实现
2021/01/16 Python
韩国女装NO.1网店:STYLENANDA
2016/09/16 全球购物
澳大利亚在线家具、灯饰和家居装饰店:LivingStyles
2018/11/20 全球购物
Pamela Love官网:纽约设计师Pamela Love的精美、时尚和穿孔珠宝
2020/10/19 全球购物
人民调解员先进事迹材料
2014/05/08 职场文书
科长个人四风问题整改措施思想汇报
2014/10/13 职场文书
党的群众路线教育实践活动总结材料
2014/10/30 职场文书
实施意见格式范本
2015/06/05 职场文书
思想品德课教学反思
2016/02/24 职场文书
python实现调用摄像头并拍照发邮箱
2021/04/27 Python
SpringAop日志找不到方法的处理
2021/06/21 Java/Android
Python多线程 Queue 模块常见用法
2021/07/04 Python
Win11 Build 22000.51版本文件资源管理器“命令栏”和上下文菜单有什么新变化?
2021/11/21 数码科技