PHP $GLOBAL

PHP $GLOBALS 是PHP的一個預定義的包含當前腳本全部全局變數超級全局變數關聯數組,在一個PHP腳本的全部作用域中都可以引用。

基本介紹

定義,原理,特點,套用,

定義

$GLOBALS 關聯數組是一個包含了當前腳本全部定義在全局範圍的變數的引用。數組的鍵就是變數的名字。

原理

`$GLOBALS` 的原理涉及了 PHP 的變數作用域和超全局變數機制。
1. 變數作用域
- 在 PHP 中,變數可以具有不同的作用域,作用域定義了變數的可見性和生命周期。
- 全局作用域中定義的變數可以在腳本的任何地方被訪問,而局部作用域中定義的變數只能在定義它們的代碼塊內部訪問。
2. 超全局變數機制
- PHP 提供了一些特殊的超全局變數,它們在腳本的任何地方都可以被訪問,不需要任何額外的聲明或引入。
- `$GLOBALS` 就是其中之一,它是一個關聯數組,包含了當前腳本中的全部全局變數。
3. 基於這些機制,$GLOBALS 的原理可以總結如下
- 在 PHP 執行腳本時,所有的全局變數都會被存儲在 `$GLOBALS` 這個預定義的超全局數組中。
- 當在任何作用域中訪問 $GLOBALS 時,實際上是在訪問這個數組。
- 對 $GLOBALS 數組的操作會影響到其中存儲的全局變數本身,因為 $GLOBALS 中的每個元素都是對應全局變數的引用。(PHP 8.1.0不再支持直接對整個$GLOBALS數組的寫訪問)
- 因此,通過 $GLOBALS 可以在任何作用域內訪問和操作全局變數,而不受變數作用域的限制。
這種機制使得在 PHP 中輕鬆地在不同的作用域中訪問和修改全局變數成為可能,同時也提供了一種方便的方式來管理全局狀態。

特點

與所有其他超全局變數不同,$GLOBALS在PHP中總是可用的。
注意:
從 PHP 8.1.0 起,不再支持對整個 $GLOBALS 數組的寫訪問: $GLOBALS 現在是全局符號表的唯讀副本。 也就是說,全局變數不能通過副本進行修改。 在之前的版本中,$GLOBALS 數組和 PHP 數組通常傳值的行為不一樣,全局變數可通過副本修改。

套用

以下實例介紹了如何使用超級全局變數 $GLOBAL。 z 是一個$GLOBALS數組中的一個全局變數,該變數同樣可以在函式外訪問
<?php
$x = 5;
$y = 10;
function add() {
$GLOBALS['z'] = $GLOBALS['x'] + $GLOBALS['y'];
}
add();
echo $z; // 輸出 15
?>

相關詞條

熱門詞條

聯絡我們