工具:Hackificator
Hackificator是第一个用于开始将PHP代码库转换为Hack的工具。
Hackificator [options] <directory or file path>
如果您想查看Hackificator可用的所有选项,可以通过hackificator –help查看帮助。
破解PHP代码
首先,将.hhconfig文件放在代码库的顶部根目录中。这是必需的。
然后,在运行Hackificator时,它会扫描您的项目/代码库以查找PHP文件,并执行两个步骤:
将文件从<?php转换为<?hh。此时您正式成为Hack文件。
它对您的代码进行了一些非常简单的更改,以帮助阻止Hack类型检查器错误。例如,如果你给类型提示参数一个空的默认值,它通常会以可空的?前缀。
以下是转换示例:
<?php
Class A {}
Function foo(A $a = null) {
Return true;
}
To:
<?hh
Class A {}
Function foo(?A $a = null) {
Return true;
}
注意我们没有为foo的返回类型添加任何类型的注释。稍后将使用hh_server –convert。
此外,重要的是要注意,如果你在项目中已经有任何Hack文件,你试图破解,他们必须是typechecker干净。即,运行hh_client必须产生无错误!
升级Hack Typechecker模式
您还可以使用hackificator将当前的Hack文件(而不是PHP文件)升级到最严格的模式。因此,例如,您可以使用它从部分模式转为严格模式,假设转换为严格模式不会导致任何Typechecker错误。
Hackificator –upgrade <directory or file path>