天天看點

《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,它将會抛出一個異常。

針對其他的超級全局變量和值類型,你還可以編寫類似的通路器代碼。