混合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 Tarjan的personal favorite)
> HHVM的巨大性能提升.
因此,如果您绝对不能使用HHVM,那么这可能值得考虑,但如果可以,那么我强烈推荐HHVM以获得Hack的全部好处.
标签:php,hacklang 来源: https://codeday.me/bug/20190517/1120123.html