Hackificator
虽然您应该总是使用Hack(<?hh)启动新的项目,但我们意识到有一个庞大的PHP代码库,不能从头开始丢弃或重写。
Hackificator是第一个用于开始将您的PHP代码库转换为Hack的工具。
hackificator [options] <directory or file path>
如果您想查看Hackificator可用的所有选项,您可以通过以下方式查看帮助hackificator --help。
Hackifying PHP代码
首先,将一个.hhconfig文件放在你的代码库的根目录下。这是必需的。
然后,当运行Hackificator时,它会扫描您的项目/代码库以获取PHP文件,并执行两个步骤:
- 将文件转换<?php为<?hh。在这一点上,你正式是一个Hack文件。
- 它对您的代码进行了一些非常简单的更改,以帮助阻止Hack typechecker错误。例如,如果您将类型提示参数指定为null默认值,则通常将其添加为可空值?。
以下是转换示例:
<?php
class A {}
function foo(A $a = null) {
return true;
}
至:
<?hh
class A {}
function foo(?A $a = null) {
return true;
}
请注意,我们没有为返回类型添加任何类型的注释foo。这将在以后出现hh_server --convert。
此外,最重要的是要注意,如果您在项目中已经有Hack文件而你还需要进行hackify,那么它们必须用typechecker清理。即运行hh_client必须产生No errors!。
升级Hack Typechecker模式
您还可以使用hackificator将当前的Hack文件(而不是PHP文件)升级到最严格的模式。因此,举例来说,你可以用它去partial到strict模式,假设转换strict模式,不会造成任何typechecker错误。
hackificator --upgrade <directory or file path>