超級全局變量是在每個代碼範圍内都存在的全局變量,不需要使用global語句即可使用。這些在運作環境中特殊存在的變量一共有9個,分别是:
$globals
$_server
$_get
$_post
$_files
$_cookie
$_session
$_request
$_env
在hack的嚴格模式下,并不支援超級全局變量。如果你試圖使用它們中的某一個,類型檢查器将會告訴你這個變量未定義。然而在通常的web應用或者腳本的編寫過程中,這些超級變量又是不可或缺的。
要解決上述問題,你能夠做的最簡單的辦法就是,在一個局部模式的檔案下編寫通路器函數,然後在嚴格模式下的檔案中調用。
這樣的方式對你代碼的類型安全不會有任何貢獻。然而,我們還可以做得更好。特别是對于http的get和post參數來說,你經常知道所期待的值的類型,是以你可以根據這個知識點來得到更加強健的代碼:
我們将在1.7節更加詳細地了解invariant()函數的使用方法。目前來說,我們僅僅需要知道如果第一個參數是false,它将會抛出一個異常。
針對其他的超級全局變量和值類型,你還可以編寫類似的通路器代碼。