昨天 Facebook 推出了HipHop,这是一个从 php 到 c++ 的源代码转换器。与标准 php 相比,php 函数和结构的集合更受限制。
当前流行的 php 框架(ZF、CakePHP、symfony)是否与 HipHop 兼容?如果不是,这些框架的哪些部分不可用?
如果我没记错的话,HipHop 还没有发布——甚至昨天 Facebook 公告链接的wiki 页面也没有发布。
所以,现在会有点难以回答。
我想这一切都取决于:
eval
,HipHop 不支持类似的东西至少 ZF 和 Symfony 被用于企业级应用程序,它们很有可能与 HipHop 一起运行。如果不是现在,那么迟早。但是,问题不在于它们是否可以与这些框架一起运行,而在于您的支持 IT 架构看起来如何。
HipHop 用于扩展像 Facebook 这样的大型多服务器高流量网站。在您的常规 Web 应用程序中,您可能不会从中获得任何优势。继续使用 memcache 和 APC 即可。
请参阅这些相关文章:
虽然我确信我们大多数人都对 HipHop 将会是什么感到好奇,但我知道它不会替代 PHP - 它是一个非常小众的产品:除非您运行的是大型服务器场,否则性能优势与维护成本并不能证明它是合理的。
对于某些人来说,使用编码 PHP 可能是一个有趣的替代方案——但这又会引入更大的维护开销。编译后的 PHP 似乎很有意义的唯一低容量场景是嵌入式设备(软件存在以支持硬件,反之亦然)和非常高安全性的安装(这不是一个好主意)有口译员)。
现在说什么 PHP 软件可以使用它还为时过早。但是,即使这已确定,我也希望看到任何供应商做出坚定的承诺,即在我切换之前,他们将在未来明确支持 HipHop。
C。
我不会重复已经说过的话,我只是补充一点,一旦 HipHop 发布,您就可以依靠开源社区为您最喜欢的框架提交补丁,以提高与 HipHop 的兼容性。
此外,测试您最喜欢的框架是否兼容的一种好方法是使用 HPHPi 启动测试套件(然后您就知道将补丁工作集中在哪里;)。
搜索“eval”会产生很多误报,因为您会在评论中找到“evaluate”一词,或者如果搜索不区分大小写,则为 escapeValue 等。
如果您在 ZF 1.11 中搜索 'eval(',您会在 Zend/Serializer/Adapter/PhpCode.php 的第 59 行中找到一次,该方法是反序列化存储的 PHP 代码的方法。该方法不是 MVC 的一部分架构,数据库组件,实际上并没有在框架中的其他任何地方使用(Zend_Serializer_Adapter_PhpCode 没有在代码库的其他任何地方实例化)。
因此,如果 eval 破坏了您的 ZF-Hip Hop 应用程序,请不要在您的消费者代码中使用 Zend_Serializer_Adapter_PhpCode 或 eval。
简单的回答:我认为不会。
刚刚在嘻哈页面上看到了这个:https ://github.com/facebook/hiphop-php/wiki/
“您继续使用更简单的 PHP 进行编码,然后 HipHop 以语义等效的方式执行您的源代码,并牺牲一些很少使用的功能 - 例如 eval() - 以换取改进的性能。”
在 ZF 1.9 上搜索了“eval”,出现了 100 多次。