Facebook XHP:又一PHP改进项目,值得关注

总所周知,在PHP中拼接html是一件痛苦的事情,而很多语言都有了字符串插值这一特性,PHP却一直没有,对此,facebook又一开源力作,完美的解决了这个问题。

就在Google高调发布业界普遍认为针对Facebook的Buzz的同时,Facebook则低调发布了XHP项目。这是一个多月以来,继HipHop之后,Facebook推出的又一重要PHP改进项目。看来,在社会化网络市场地位稳固之后,Facebook也开始大力回馈技术社区,在口碑和攒人品方面与Google展开竞争了。

根据Github上项目的文档维基,XHP是一个PHP扩展,通过它,开发人员可以直接在PHP代码中内嵌XML文档片段,作为合法的PHP表达式。这样,PHP就成为一个更为严格的模板引擎,大大简化了实现可重用组件的工作。

比如这样的简单代码示例:

 

?php
$href = 'http://www.facebook.com';
echo a href={$href}Facebook/a

注意第三行代码中的语法,其中echo后的不是字符串。

项目负责人Facebook工程师Marcel Laverdet则表示,XHP不仅使前端代码更容易理解,还有助于防止跨站脚本攻击。事实上,Facebook Lite网站(快速简化版本的Facebook)就是完全用XHP写成的。

和上次HipHop发布一样,PHP之父Rasmus Lerdorf也很快做出回应,他说:

XHP其实就是支持内嵌XML,这在VB中称为XML元素文本。它增加了一个额外的分析步骤,将内嵌的XML元素映射为PHP类。类的语法有些奇怪。至少对我而言,其中主要有意思的地方,是PHP现在理解要输出的XML了,就可以以上下文敏感的方式进行过滤。

Lerdorf也指出,XHP存在明显的性能问题,它的XML运行时验证显然会增加开销。为此,Facebook不得不使用APC[Alternative PHP Cache]再加上HipHop。

对此,Marcel Laverdet回复:

性能的确是XHP最引人关注的问题。确实,XHP比原始的字符串拼接要慢2到3倍,但是这对大多数程序都不是问题。另外,虽然APC肯定是必需的(大多数网站都是如此),HipHop则不然。其实Lite网站只是到最近才开始切换到HipHop,之前也表现很不错。在实际应用中,XHP对性能影响并不是很大。在简洁和性能之间的权衡上,XHP做得不错。

此外,Wikispaces的创始人James Byers也写到:

对我来说,XHP比HipHop有意思得多。它将完全改变模板还是只用PHP的争论。对此我很高兴。PHP应该继续这样改进。

Tipjoy的联合创始人,现在也在Facebook任工程师的Ivan Kirigin也对XHP赞赏有加:

XHP是我在Facebook唯一使用的PHP工具,比其他语言类似的东西都好。记号完美代表了对象,不用折腾面向对象编程那些烂东西了,这可是非常罕见的宝贝。