Php Ctemplate引擎開發(fā)相關(guān)內(nèi)容
也許你對Php Ctemplate不了,解甚看到這個名詞,只知道它的前半部分是一種編程語言。沒有關(guān)系讓我來給大家介紹一下這個基于php語言的標(biāo)簽?zāi)0嬉妫ㄕ堅试S我這樣去翻譯這套web開發(fā)解決方案,盡管我可能翻譯的不準(zhǔn)確)。
先簡短說一下他的歷史。了解Php Ctemplate先要知道Ctempalte;Ctempalte全稱是Google Ctemplate。它是一種用c++語言、簡單但是效率非常高的網(wǎng)頁模版引擎。讓我們來看一段代碼,聰明的你立刻就知道它怎么用了(來自官方Demo)
那么C++輸出便是:
Hello John Smith
You Have just won (這里是執(zhí)行random%100000 隨機數(shù))
Well ,(這里是執(zhí)行random%100000 的隨機數(shù)再 * 0.83),after taxes
好吧,總結(jié)一下 就是把c++源碼中的Template對象加載 tpl(我們可以稱它為模版)文件之后,再填充TemplateDictionary中的對應(yīng)的值,最后輸出。聽起來很拗口是吧,簡單點把后端標(biāo)簽對應(yīng)值填充到tpl的{{標(biāo)簽}}中。
詳細(xì)的請參見http://google-ctemplate.googlecode.com/svn/trunk/doc/index.html
那么PHP ctemplate呢?大家都知道PHP擴展吧,玩過PHP的朋友都知道gd,exif,mysql,mysqli這些擴展吧。對,就是php.ini 文件里“extension=”那里的dll。我總結(jié)PHP ctemplate就是用PHP擴展接口的格式,包裝了Google Ctemplate,讓PHP具有Google Ctemplate的功能。再通俗點體現(xiàn)在代碼上就是:tpl文件不變,只是把c++ 文件變成了php文件。至于它的用法我想我在這里就不多介紹了,他和Google Ctempalte 一樣。
詳見http://code.google.com/p/php-ctemplate/
2.WIN32下可以嗎
也許你會很快意識到這種模版引擎,符合我們常見的MVC吧。沒錯,就是這樣。但是很遺憾,PHP Ctemplate只能在Freebsd系統(tǒng)中運行,win32環(huán)境中的php,我至今沒有在網(wǎng)上發(fā)現(xiàn)對應(yīng)的PHP ctemplate dll,我也咨詢過PHP ctemplate的作者,他好像不太愿意在win32環(huán)境中編譯這些代碼;我曾經(jīng)和我開發(fā)c++的朋友“阿呆”試著編譯,我們找了php源碼+ Ctemplate源碼+PHP ctemplate源碼編譯出了win32下的PHP ctemplate擴展,但是很奇怪,每次php啟動加載PHP ctemplate時,php引擎就會出現(xiàn)異常,PHP ctemplate不能正常加載。
如果成功加載php ctemplate則會在phpinfo 中顯示:

我也看了下PHP ctemplate的源碼好像是基于Zend編寫的。因為本人對c++和php都不是很精通,實在也沒有能力去重新編寫這套擴展,所以只能想了個折中的辦法:把Ctemplate用ATL COM 包裝起來,模擬PHP ctemplate的函數(shù)和方法。
3.我的嘗試
之所以這么曲折,是因為用這套框架后,根本沒有辦法調(diào)試PHP代碼,我試過在freebsd的環(huán)境中安裝xdebug,好吧,勉強能進(jìn)行遠(yuǎn)程調(diào)試??墒莊reebsd是沒有圖形界面的,哎,無奈下安裝了gnome,只能暫時這樣了。出于好奇和不服氣,我把Ctemplate用ATL COM 包裝起來,模擬PHP ctemplate的函數(shù)和方法,但是只完成了一半。在這里要特別感謝“阿呆”同志,沒有他我也根本寫不出c++的ATL。下面是ATL COM里面的方法(只完成了一部分)。

我包裝的ATL COM 功能我包裝在了core.php 中。

如果大家有興趣可以找我要源碼繼續(xù)完善,因為它是COM的所以ASP也可以使用,我會把dll提供下載。如果大蝦們成在win32下成功編譯使用PHP ctemplate,那我更求之不得。
下載COM文件 phpctempalteCOM
相關(guān)文章
php smarty截取中文字符亂碼問題?gb2312/utf-8
一般網(wǎng)站頁面的顯示都不可避免的會涉及子字符串的截取,這個時候truncate就派上用場了,但是它只適合英文用戶,對與中文用戶來說,使用 truncate會出現(xiàn)亂碼2011-11-11
Php Ctemplate引擎開發(fā)相關(guān)內(nèi)容
因為公司需要,我們后面的項目將采用Php Ctemplate引擎開發(fā)。在這里,我只是將我這一個月學(xué)習(xí)到的,和自己的理解寫出來。如果有不正確,或者描述不準(zhǔn)確的地方,希望大家能批評指出2012-03-03
需要使用php模板的朋友必看的很多個頂級PHP模板引擎比較分析
最近學(xué)習(xí)php模板技術(shù),找到一篇不錯的關(guān)于php模板的分析為了找到一個好的模板引擎,我在互聯(lián)網(wǎng)上進(jìn)行搜索,目前已經(jīng)整理出了以下名單2008-05-05

