天天看点

《Hack与HHVM权威指南》——1.5.1 使用超级全局变量

超级全局变量是在每个代码范围内都存在的全局变量,不需要使用global语句即可使用。这些在运行环境中特殊存在的变量一共有9个,分别是:

$globals

$_server

$_get

$_post

$_files

$_cookie

$_session

$_request

$_env

在hack的严格模式下,并不支持超级全局变量。如果你试图使用它们中的某一个,类型检查器将会告诉你这个变量未定义。然而在通常的web应用或者脚本的编写过程中,这些超级变量又是不可或缺的。

要解决上述问题,你能够做的最简单的办法就是,在一个局部模式的文件下编写访问器函数,然后在严格模式下的文件中调用。

这样的方式对你代码的类型安全不会有任何贡献。然而,我们还可以做得更好。特别是对于http的get和post参数来说,你经常知道所期待的值的类型,所以你可以根据这个知识点来得到更加强健的代码:

我们将在1.7节更加详细地了解invariant()函数的使用方法。目前来说,我们仅仅需要知道如果第一个参数是false,它将会抛出一个异常。

针对其他的超级全局变量和值类型,你还可以编写类似的访问器代码。