使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制作新闻系统的思路
Oct 09 PHP
在IIS上安装PHP4.0正式版
Oct 09 PHP
PHPMailer邮件类利用smtp.163.com发送邮件方法
Sep 11 PHP
php MsSql server时遇到的中文编码问题
Jun 11 PHP
php代码运行时间查看类代码分享
Aug 06 PHP
PHP服务器页面间跳转实现方法
Aug 02 PHP
一个PHP并发访问实例代码
Sep 06 PHP
解析php开发中的中文编码问题
Aug 08 PHP
php基于CodeIgniter实现图片上传、剪切功能
May 14 PHP
php安装ssh2扩展的方法【Linux平台】
Jul 20 PHP
PHP mongodb操作类定义与用法示例【适合mongodb2.x和mongodb3.x】
Jun 16 PHP
php实现银联商务公众号+服务窗支付的示例代码
Oct 12 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
Apache+php+mysql在windows下的安装与配置图解(最新版)
2008/11/30 PHP
php empty()与isset()区别的详细介绍
2013/06/17 PHP
PHP zip扩展Linux下安装过程分享
2014/05/05 PHP
php使用递归函数实现数字累加的方法
2015/03/16 PHP
PHP接收App端发送文件流的方法
2016/09/23 PHP
PHP基于curl模拟post提交json数据示例
2018/06/22 PHP
php让json_encode不自动转义斜杠“/”的方法
2020/04/27 PHP
实例:尽可能写友好的Javascript代码
2006/10/09 Javascript
Javascript 面向对象之重载
2010/05/04 Javascript
javascript面向对象之Javascript 继承
2010/05/04 Javascript
关于jquery append() html时的小问题的解决方法
2010/12/16 Javascript
jQuery简单实现仿京东商城的左侧菜单效果代码
2015/09/09 Javascript
JavaScript制作简单分页插件
2016/09/11 Javascript
如何使用Vuex+Vue.js构建单页应用
2016/10/27 Javascript
Vue AST源码解析第一篇
2017/07/19 Javascript
微信通过页面(H5)直接打开本地app的解决方法
2017/09/09 Javascript
详解如何使用 vue-cli 开发多页应用
2017/12/16 Javascript
jQuery实现的简单日历组件定义与用法示例
2018/12/24 jQuery
浅谈对于“不用setInterval,用setTimeout”的理解
2019/08/28 Javascript
细述Javascript的加法运算符的具体使用
2019/10/18 Javascript
JsonServer安装及启动过程图解
2020/02/28 Javascript
Python函数学习笔记
2008/10/07 Python
Python定时器实例代码
2017/11/01 Python
python实现堆和索引堆的代码示例
2018/03/19 Python
Python面向对象程序设计示例小结
2019/01/30 Python
python2使用bs4爬取腾讯社招过程解析
2019/08/14 Python
详解django使用include无法跳转的解决方法
2020/03/19 Python
CSS Grid布局教程之什么是网格布局
2014/12/30 HTML / CSS
应用数学自荐书范文
2013/11/24 职场文书
班主任对学生的评语
2014/04/26 职场文书
室内设计专业自荐信
2014/05/31 职场文书
学校食品安全实施方案
2014/06/14 职场文书
2015年爱牙日活动总结
2015/03/23 职场文书
2015教师年度工作总结范文
2015/04/07 职场文书
员工工作失职检讨书范文!
2019/07/03 职场文书
Oracle11g r2 卸载干净重装的详细教程(亲测有效已重装过)
2021/06/04 Oracle