Hackificator

2018-09-27 14:25 更新

雖然您應(yīng)該總是使用Hack(<?hh)啟動(dòng)新的項(xiàng)目,但我們意識(shí)到有一個(gè)龐大的PHP代碼庫(kù),不能從頭開(kāi)始丟棄或重寫(xiě)。

Hackificator是第一個(gè)用于開(kāi)始將您的PHP代碼庫(kù)轉(zhuǎn)換為Hack的工具。

hackificator [options] <directory or file path>

如果您想查看Hackificator可用的所有選項(xiàng),您可以通過(guò)以下方式查看幫助hackificator --help。

Hackifying PHP代碼

首先,將一個(gè).hhconfig文件放在你的代碼庫(kù)的根目錄下。這是必需的。

然后,當(dāng)運(yùn)行Hackificator時(shí),它會(huì)掃描您的項(xiàng)目/代碼庫(kù)以獲取PHP文件,并執(zhí)行兩個(gè)步驟:

  1. 將文件轉(zhuǎn)換<?php為<?hh。在這一點(diǎn)上,你正式是一個(gè)Hack文件。
  2. 它對(duì)您的代碼進(jìn)行了一些非常簡(jiǎn)單的更改,以幫助阻止Hack typechecker錯(cuò)誤。例如,如果您將類(lèi)型提示參數(shù)指定為null默認(rèn)值,則通常將其添加為可空值?。

以下是轉(zhuǎn)換示例:

<?php

class A {}

function foo(A $a = null) {
  return true;
}

至:

<?hh

class A {}

function foo(?A $a = null) {
  return true;
}

請(qǐng)注意,我們沒(méi)有為返回類(lèi)型添加任何類(lèi)型的注釋foo。這將在以后出現(xiàn)hh_server --convert。

此外,最重要的是要注意,如果您在項(xiàng)目中已經(jīng)有Hack文件而你還需要進(jìn)行hackify,那么它們必須用typechecker清理。即運(yùn)行hh_client必須產(chǎn)生No errors!。

升級(jí)Hack Typechecker模式

您還可以使用hackificator將當(dāng)前的Hack文件(而不是PHP文件)升級(jí)到最嚴(yán)格的模式。因此,舉例來(lái)說(shuō),你可以用它去partial到strict模式,假設(shè)轉(zhuǎn)換strict模式,不會(huì)造成任何typechecker錯(cuò)誤。

hackificator --upgrade <directory or file path>


以上內(nèi)容是否對(duì)您有幫助:
在線筆記
App下載
App下載

掃描二維碼

下載編程獅App

公眾號(hào)
微信公眾號(hào)

編程獅公眾號(hào)