Facebook于周四开源了一款名为"Hack"的编程语言,该语言基于PHP,运行于HHVM,兼具PHP开发的便捷性和Java这类强类型语言的特点,使开发和测试更加容易,也能够帮助减少一些使用纯PHP开发时只有在运行时才能发现的Bug。

除了Hack这个名字值得吐一大槽之外,相对PHP来讲,Hack主要增加的是静态类型检查(PHP也有,例如函数参数类型限定,但并不完整),Hack可以标注函数签名和类成员的类型信息,还支持范型、Nullable类型、更明确的集合类型(PHP的array是map和list的合体)、lambda表达式甚至异步特性。

废话少说,放码出来。

Type Annotations
<?hh
class MyClass {
    const int MyConst = 0;
    private string $x = '';
    public function increment(int $x): int {
        $y = $x + 1;
        return $y;
    }
}

 

Generics
<?hh
class Box<T> {
    protected T $data;

    public function __construct(T $data) {
        $this->data = $data;
    }

    public function getData(): T {
        return $this->data;
    }
}

 

Lambdas
<?hh
function foo(): (function(string): string) {
    $x = 'bar';
    return $y ==> $x . $y;
}
function test(): void {
    $fn = foo();
    echo $fn('baz'); // barbaz
}

 

详细的文档和更多例子可以参考Hack的官方网站http://hacklang.org/

Facebook的官方介绍地址如下(自备工具,科学上网):https://code.facebook.com/posts/264544830379293/hack-a-new-programming-language-for-hhvm/