2014-01-13 27 views
0

我想實現一個像smarty這樣的小型PHP模板引擎,它允許我編寫自己的php標籤(如果...)如何實現自動編譯像java Servlet,PHP CMS模板?

現在,我的問題是如何在模板文件被修改時自動編譯?

例如:Servlet。當我們修改了servlet並等待了幾秒之後,eclipse會告訴你修改後的servlet類已被重新編譯!

任何幫助將是偉大的!

回答

0

您可以檢查緩存的已編譯模板和源文件之間的修改日期。

$cacheFileAge = @filemtime($this->cacheFile); //Get Time 
foreach(array_merge(array($template),$this->snipFiles) as $f) 
    if($cacheFileAge < filemtime($f)) //Compare every template to cache file 
    return $this->parse(file_get_contents($template)); //If cache file older than one, re-compile it 
debugLog("Using Cached file ({$this->cacheFile})"); 
include($this->cacheFile); //use cached file 

這個例子是從另一個PHP模板項目HAMLE

+0

謝謝採取!你能解釋一下這是如何緩存文件的工作?爲什麼我們需要緩存? – Joey

+0

你最好解析你的模板文件,找到你的自定義標籤,並用php代碼替換它們(也許使用'regex_replace_cb()'或類似的方法),然後將這個生成的文件保存到你的緩存本地,然後當你想顯示這個頁面,你可以簡單地從緩存位置'include()'文件,它會顯示你的模板並執行其中的代碼。 –

+0

謝謝,還有一個問題,我應該在哪裏做這些SQL選擇?在解析? – Joey