Hackificator

2018-09-27 14:25 更新

虽然您应该总是使用Hack(<?hh)启动新的项目,但我们意识到有一个庞大的PHP代码库,不能从头开始丢弃或重写。

Hackificator是第一个用于开始将您的PHP代码库转换为Hack的工具。

hackificator [options] <directory or file path>

如果您想查看Hackificator可用的所有选项,您可以通过以下方式查看帮助hackificator --help。

Hackifying PHP代码

首先,将一个.hhconfig文件放在你的代码库的根目录下。这是必需的。

然后,当运行Hackificator时,它会扫描您的项目/代码库以获取PHP文件,并执行两个步骤:

  1. 将文件转换<?php为<?hh。在这一点上,你正式是一个Hack文件。
  2. 它对您的代码进行了一些非常简单的更改,以帮助阻止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>


以上内容是否对您有帮助:
在线笔记
App下载
App下载

扫描二维码

下载编程狮App

公众号
微信公众号

编程狮公众号