XHPPHP的XML模板引擎擴(kuò)展
Facebook則低調(diào)發(fā)布了XHP項(xiàng)目。這是一個(gè)多月以來,繼 HipHop之后,F(xiàn)acebook推出的又一重要PHP改進(jìn)項(xiàng)目??磥?,在社會(huì)化網(wǎng)絡(luò)市場(chǎng)地位穩(wěn)固之后,F(xiàn)acebook也開始大力回饋技術(shù)社區(qū),在口 碑和攢人品方面與Google展開競(jìng)爭(zhēng)了。
根據(jù)Github上項(xiàng)目的文檔維基,XHP是一個(gè)PHP擴(kuò)展,通過它,開發(fā)人員可以直接在PHP代碼中內(nèi)嵌XML文檔片段,作為 合法的PHP表達(dá)式。這樣,PHP就成為一個(gè)更為嚴(yán)格的模板引擎,大大簡(jiǎn)化了實(shí)現(xiàn)可重用組件的工作。
比如這樣的簡(jiǎn)單代碼示例:
?php
$;
echo a href={$href}Facebook/a
注意第三行代碼中的語法,其中echo后的不是字符串。
項(xiàng)目負(fù)責(zé)人Facebook工程師Marcel Laverdet則表示,XHP不僅使前端代碼更容易理解,還有助于防止跨站腳本攻擊。事實(shí)上,F(xiàn)acebook Lite網(wǎng)站(快速簡(jiǎn)化版本的Facebook)就是完全用XHP寫成的。
和上次HipHop發(fā)布一樣,PHP之父Rasmus Lerdorf也很快做出回應(yīng)(英文原文 鏈接),他說:
XHP其實(shí)就是支持內(nèi)嵌 XML,這在VB中稱為XML元素文本。 它增加了一個(gè)額外的分析步驟,將內(nèi)嵌的XML元素映射為PHP類。類的語法有些奇怪。至少對(duì)我而言,其中主要有意思的地方,是PHP現(xiàn)在理解要輸出的 XML了,就可以以上下文敏感的方式進(jìn)行過濾。
Lerdorf也指出,XHP存在明顯的性能問題,它的XML運(yùn)行時(shí)驗(yàn)證顯然會(huì)增加開銷。為此,F(xiàn)acebook不得不使用 APC[Alternative PHP Cache]再加上HipHop。
對(duì)此,Marcel Laverdet回復(fù):
性 能的確是XHP最引人關(guān)注的問題。確實(shí),XHP比原始的字符串拼接要慢2到3倍,但是這對(duì)大多數(shù)程序都不是問題。另外,雖然APC肯定是必需的(大多數(shù)網(wǎng) 站都是如此),HipHop則不然。其實(shí)Lite網(wǎng)站只是到最近才開始切換到HipHop,之前也表現(xiàn)很不錯(cuò)。在實(shí)際應(yīng)用中,XHP對(duì)性能影響并不是很 大。在簡(jiǎn)潔和性能之間的權(quán)衡上,XHP做得不錯(cuò)。
此外,Wikispaces的創(chuàng)始人James Byers也寫到:
對(duì)我來說,XHP比 HipHop有意思得多。它將完全改變模板還是只用PHP的爭(zhēng)論。對(duì)此我很高興。PHP應(yīng)該繼續(xù)這樣改進(jìn)。
Tipjoy的聯(lián)合創(chuàng)始人,現(xiàn)在也在Facebook任工程師的Ivan Kirigin也對(duì)XHP贊賞有加:
XHP是我在 Facebook唯一使用的PHP工具,比其他語言類似的東西都好。記號(hào)完美代表了對(duì)象,不用折騰面向?qū)ο缶幊棠切€東西了,這可是非常罕見的寶貝。
