
Hack
工具
|
227
10.2
迁移
PHP
代码到
Hack
Hack
的创造者比大家更懂得对一个大型的代码库做代码转换是多么困难。当第一次构想
Hack
的时候,
Facebook
有基于
PHP
的数以千万行的代码库,这是几百名工程师共同劳
动的结晶。
当大多数的代码用
Hack
进行编写的时候,使用
Hack
的益处开始展现。对于
Facebook
来说,这就意味着使用某种方式把大篇幅的代码自动进行迁移是
Hack
赢得推广的必备
条件。代码库非常庞大而且变化很快,所以使用手工办法进行迁移显然是非常困难的。
在这种情况下,几种用于把代码从
PHP
到
Hack
自动迁移的工具软件应运而生。标准的
HHVM/Hack
安装中包含了这些软件。
10.2.1 Hackificator
转化
PHP
代码库到
Hack
,首先选取的工具就是
Hackificator
。它可以提供一个初始的“笔
刷转换(
broad-strokes conversion
)”。它会对目录中的
PHP
文件进行扫描,然后对这
种文件执行如下两步:
1.
它会做一些简单的机械性变化,以避免一些
Hack
错误。例如,默认值为
null
的类
型提示的形参,将改变类型提示为
nullable
。这就是说,在
PHP
中合法的
function
f(int $x = null)
在
Hack
中就是类型错误,需要变为
function f(?int $x =
null)
。
2.
它把文件开始标
记
<?php
变成
<?hh
,使用不引起任何类型检查器错误的最严格的模
式,而这种模式通常会是局部或者耦合模式。
除此之外, ...