2024 年日本 PHP 研討會

超全域變數

超全域變數在所有作用域中始終可用的內建變數

說明

PHP 中有幾個預定義變數是「超全域變數」,這表示它們在整個腳本的所有作用域中都可用。在函式或方法內不需要使用 global $variable; 就可以存取它們。

這些超全域變數是:

注意事項

注意變數可用性

預設情況下,所有超全域變數都可用,但有一些指令會影響此可用性。更多資訊,請參考 variables_order 的說明文件。

注意可變變數

在函式或類別方法內,超全域變數不能用作 可變變數

新增註解

使用者貢獻的註解 1 則註解

kitchin
11 年前
自 PHP 5.4 起,您不能將超全域變數用作函式的參數。這會導致致命錯誤

function foo($_GET) {
// whatever
}

這稱為「遮蔽」超全域變數,我不知道為什麼人們曾經這樣做,但我看過這種情況。簡單的解決方法是將函式中的變數重新命名為 $get,假設該名稱是唯一的。

根據我的測試,在先前的 PHP 版本(5.3 和 5.2)中沒有發出棄用警告。 5.4 版中的錯誤訊息如下:
致命錯誤:無法重新指派自動全域變數 _GET in...
致命錯誤:無法重新指派自動全域變數 _COOKIE in...
等等。
To Top