codecamp

Hackificator

虽然您应该总是使用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>


Hh_server
hack类型介绍
温馨提示
下载编程狮App,免费阅读超1000+编程语言教程
取消
确定
目录

关闭

MIP.setData({ 'pageTheme' : getCookie('pageTheme') || {'day':true, 'night':false}, 'pageFontSize' : getCookie('pageFontSize') || 20 }); MIP.watch('pageTheme', function(newValue){ setCookie('pageTheme', JSON.stringify(newValue)) }); MIP.watch('pageFontSize', function(newValue){ setCookie('pageFontSize', newValue) }); function setCookie(name, value){ var days = 1; var exp = new Date(); exp.setTime(exp.getTime() + days*24*60*60*1000); document.cookie = name + '=' + value + ';expires=' + exp.toUTCString(); } function getCookie(name){ var reg = new RegExp('(^| )' + name + '=([^;]*)(;|$)'); return document.cookie.match(reg) ? JSON.parse(document.cookie.match(reg)[2]) : null; }