如何从PHP迁移到Hack?

22

Facebook推出了一种新的编程语言,它看起来像是对PHP的扩展。他们称之为 Hack ,并在其HHVM引擎上运行。

在查看他们的网站并阅读了一些相关内容后,我想知道从PHP迁移到Hack可能有多么顺畅。

让我们以已部署到LEMP或LAMP堆栈的Web应用程序为基础进行讨论。

我的一些初步想法和行动列表包括:

  • 如何在迁移代码库的过程中同时运行PHP和Hack?
  • 从nginx / Apache迁移到HHVM
  • 迭代式地迁移代码库

那么,您会如何应对这个问题呢?


2
这可能更好地分成几个(有趣的)问题,而不是捆绑在一起。 - Brian Warshaw
2
@BrianWarshaw 不是很好。即使作为单独的问题,它们都太宽泛或基于个人观点。 - Mike
1
@Mike,我改变主意了,我说的是“更好”,而不是“完美” :-) - Brian Warshaw
我刚刚自己看到了新闻稿,现在正在进行教程和文档的翻译。就像Mike所说的那样,我认为现在唯一的答案是意见。在人们开始安装和开发这种语言之前,我们都只是在阅读相同的文档和新闻稿。 - skrilled
感谢 @PaulTarjan 添加了 hacklang 标签 :-) - Ronni Egeriis Persson
这里有一份指南可以帮助您入门:https://joltup.com/how-to-install-hacklang-on-ubuntu-apache-nginx/ - tslater
2个回答

31
我是Facebook的一名工程师,负责Hack项目。特别是编写了几个转换工具的部分,并将它们应用到整个Facebook的代码库中。这可能需要多个问题解答-具体取决于您的项目设置如何,使用的PHP功能等等。一些很好的起点资源包括:
  • 安装HHVM。目前,只有在使用夜间软件包(仅适用于Debian和Ubuntu)或者从我们的github源代码编译时才能使用Hack,因此请确保您做其中之一。
  • 使用nginx和fastcgi让您的代码在HHVM上运行。这应该很简单-HHVM应该可以直接运行PHP代码。如果不能,请报告一个错误。
  • 让Hack类型检查器运行您的项目。这不会改变任何东西,因为所有的代码都是PHP。
  • 开始运行我们的转换工具并在您的代码库中获取更多的Hack代码。我们可以无缝地与PHP互操作,因此您可以根据需要快速或缓慢地进行。从这里开始,您将很成功-按照您项目的需要做任何事情!
这就是您需要开始的内容。具体跟进应作为单独的问题提出。我会尽力关注SO并回答您在Hack方面的问题,以帮助大家入门! 您也可以加入我们在Freenode上的IRC聊天室#hhvm。

谢谢Josh,感谢你抽出时间发布这些步骤。这回答了我在听到Hack时所思考的问题。做得好! - Ronni Egeriis Persson
是否会有关于Hack的正式规范?也就是Hack相对于PHP所引入的所有更改。我看了你的教程,感觉非常棒,但我不知道它有多完整。另外,你说需要一个HHVM夜间版才能运行Hack;这是否意味着它将在HHVM 3.0(下周推出)中可用?无论如何,从源头得到的好答案加一分:D - Radu Murzea
@JoshWatzman,有没有一种方法可以将hack脚本编译成PHP代码,这样我们就不需要在设置中运行HHVM来运行它了?目前是否已经开发出这样的工具? - Pacerier
@Pacerier 你可以尝试使用h2tp: http://docs.hhvm.com/manual/en/install.hack.h2tp.php -- 它仍然是相当实验性的,旨在作为最终部署步骤而不是日常开发。事实上,我建议不要在日常开发中使用它 -- 你真的需要使用HHVM加上Hack类型检查器才能充分利用Hack的优势。 - Josh Watzman
2
@JoshWatzman 所有这些链接现在都失效了。是否可能更新这个答案,因为它是搜索“从PHP迁移到Hack”的第一个谷歌结果? - DavidScherer
显示剩余5条评论

1

听起来,过渡将会非常顺利。根据Wired Article的报道:

Adermann表示,Hack对于现有的PHP商店尤其具有吸引力。“具有讽刺意味的是,”他说,“它的主要优点是与PHP的区别很小。”就像Facebook一样,这些商店可以逐渐将其操作从一种语言转移到另一种语言。


https://github.com/facebook/hhvm/issues/7424#issuecomment-346176489 - Pacerier

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接