2009-12-24 85 views
0

我正在查看interspire購物車的PHP代碼,他們廣泛使用模板變量,如%% GLOBAL_variables %%和%%變量%%。php模板引擎使用%%變量%%

我還沒有見過這些,我試圖瞭解它們是如何定義和使用的。有誰知道模板引擎涉及哪些文檔?

感謝

回答

2

我用%%爲「分隔符」爲我自己本土的模板引擎。沒有什麼特別的,它們只是可以防止任何不必要的替換的字符,因爲它們不太可能會自然發生。有些引擎使用{keyword},就像Smarty一樣。作爲一個例子,你可以用一個關聯的數據數組進行快速搜索/替換。

$data_replace = array('%%GLOBAL_variable%%'=>'some data', 
    '%%variable1%%'=>'different data', 
    '%%variable2%%'=>'limited time only!'); 
//Perform the search and replace 
$output = str_replace(array_keys($data_replace), $data_replace, $template_text); 
0

作爲一個猜測它看起來像一個家庭成長的解決方案。

這就是說,它會很容易重新創建這樣的事情做一樣的東西:

  1. 加載模板文件轉換成 字符串。

  2. 抓住'%% xxx %%'的所有發生。 (我猜 '%%' 只是 handly分隔符。)

  3. 將第一個 '%%' 到 '$ _' 如果 的次數開始 '%% GLOBAL' 或「$ ' 除此以外。

  4. 一旦完成所有這一切評估結果字符串。 (eval

另外,將有可能包括使用extract評價的範圍內的變量。

無論如何,我一直以爲你應該能夠通過在代碼中尋找來證實這一點。

+0

-1 for needless eval –

+0

True - 您可以用步驟3中的預先計算的變量內容替換'%% xxx %%'。這樣會更安全但更嚴格。 (在這種情況下,這是一種明智的折衷。) –