编程语言
首页 > 编程语言> > 混合PHP / Hacklang:在带有注释类型注释的常规PHP上使用typechecker

混合PHP / Hacklang:在带有注释类型注释的常规PHP上使用typechecker

作者:互联网

由于缺乏对64位VM的访问权限,我目前无法构建hhvm,因此我无法使用他们拥有的类型检查程序.他们的文档似乎没有详细描述类型检查器(hh_server和hh_client?)的操作.

我想知道,对于任何使用过它的人来说,如果在这种情况下可以使用类型检查器:

假设某人无法将他们的PHP代码库转换为Hack,所以他们用hacklang类型注释的形式编写带有注释的PHP,并在构建时使用工具剥离注释,制作一个hh文件,运行typechecker并报告错误.

例如.原始PHP:

<?php
function lar(/* int */ $x)/* : int */
{
    return $x;
}

复制上面的内容,删除注释,更改?php到?hh:

<?hh
function lar(int $x): int
{
    return $x;
}

通过类型检查器运行它,看它是否会产生错误.

这样,您就可以使用普通PHP访问合法类型检查,而无需在HHVM上运行它. typechecker是否以适合此设置的方式运行?

解决方法:

我是Facebook的工程师,从事Hack工作.你绝对可以做到这一点,我不会说这是一件坏事,但是你会错过很多很棒的功能. Hack类型检查器可以在构建时运行(hh_server –check / path / to / www),但运行类型检查器的最佳方法是作为守护进程.由于守护进程在后台逐步检查您的代码,因此无论何时询问,它都可以非常快速地报告错误.这使您可以在编写代码时获得反馈,而不是在完成后获得反馈.这种快速反馈循环确实有助于加快开发速度.

你会错过的其他一些事情:

>许多语言功能,如集合,lambda表达式,类型注释的运行时强制执行和尾随逗号(Paul Tarjanpersonal favorite)
> HHVM的巨大性能提升.

因此,如果您绝对不能使用HHVM,那么这可能值得考虑,但如果可以,那么我强烈推荐HHVM以获得Hack的全部好处.

标签:php,hacklang
来源: https://codeday.me/bug/20190517/1120123.html