使ecshop模板中可引用常量的實現(xiàn)方法
更新時間:2011年06月02日 00:25:13 作者:
據(jù)說ecshop的模板類是修改的smarty,不過個人感覺不是修改是完全重寫了。它和smarty上只是模板標簽上有相同的地方,同時閹割了很多功能
比如$smarty.const.'常量',這個就不能用。
其實模板引擎原理上并不復雜,只是把一些模板標簽替換為php中的函數(shù),變量,語法結(jié)構(gòu)罷了。
這次要在ecshop模板中加入引用常量的功能,只需在函數(shù)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中的函數(shù),變量,語法結(jié)構(gòu)罷了。
這次要在ecshop模板中加入引用常量的功能,只需在函數(shù)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 }
相關(guān)文章
php heredoc和phpwind的模板技術(shù)使用方法小結(jié)
Heredoc技術(shù),在正規(guī)的PHP文檔中和技術(shù)書籍中一般沒有詳細講述,只是提到了這是一種Perl風格的字符串輸出技術(shù)。但是現(xiàn)在的一些論壇程序,和部分文章系統(tǒng),都巧妙的使用heredoc技術(shù),來部分的實現(xiàn)了界面與代碼的準分離,phpwind就是一個典型的例子。2008-03-03
php使用unset()刪除數(shù)組中某個單元(鍵)的方法
這篇文章主要介紹了php使用unset()刪除數(shù)組中某個單元(鍵)的方法,實例分析了unset函數(shù)在刪除數(shù)組單元時的使用技巧,需要的朋友可以參考下2015-02-02
PHP實現(xiàn)使用DOM將XML數(shù)據(jù)存入數(shù)組的方法示例
這篇文章主要介紹了PHP實現(xiàn)使用DOM將XML數(shù)據(jù)存入數(shù)組的方法,結(jié)合具體實例形式分析了php基于DOM實現(xiàn)xml數(shù)據(jù)讀取與解析相關(guān)操作技巧,需要的朋友可以參考下2017-09-09

