php 提供了大量的預定義變數。這些變數依賴於執行的伺服器的版本和設定,及其它因素,所以並沒有詳細的說明文件。一些預定義變數在 php 以命令列cli形式執行時並不生效。這些變數有些是關閉的,需要配置php.ini中register_globals
q鍵來開啟(決定是否將egpcs(environment,get,post,cookie,server)變數註冊為全域性變數。預設是關閉的 )
從 php 4.1.0 開始,php 提供了一套附加的預定陣列,這些陣列變數包含了來自 web 伺服器(如果可用),執行環境,和使用者輸入的資料。這些陣列非常特別,它們在全域性範圍內自動生效。因此通常被稱為自動全域性變數(autoglobals)或者超全域性變數(superglobals)。
php 中的許多預定義變數都是「超全域性的」,這意味著它們在乙個指令碼的全部作用域中都可用。在函式或方法中無需執行 global $variable; 就可以訪問它們。
這些超全域性變數是:
$globals //乙個包含了全部變數的全域性組合陣列。變數的名字就是陣列的鍵。 $globals
在php中總是可用的。
$_server //$_server
是乙個包含了諸如頭資訊(header)、路徑(path)、以及指令碼位置(script locations)等等資訊的陣列。這個陣列中的 專案由 web 伺服器建立。不能保證每個伺服器都提供全部專案;
$_get //通過 url 引數傳遞給當前指令碼的變數的陣列。
$_post //通過 http post 方法傳遞給當前指令碼的變數的陣列。
$_files //通過 http post 方式上傳到當前指令碼的專案的陣列。
$_cookie //通過 http cookies 方式傳遞給當前指令碼的變數的陣列。
$_session //當前指令碼可用 session 變數的陣列。
$_request //預設情況下包含了 $_get,$_post 和 $_cookie 的陣列。
$_env //通過環境方式傳遞給當前指令碼的變數的陣列。這些變數被從 php 解析器的執行環境匯入到 php 的全域性命名空間。很多是由 支援 php 執行的 shell 提供的,並且不同的系統很可能執行著不同種類的 shell,所以不可能有乙份確定的列表。請檢視你 的 shell 文件來獲取定義的環境變數列表。
$argv— 傳遞給指令碼的引數陣列,它被定義在$_server全域性陣列中(當指令碼以命令列方式執行時,argv 變數傳遞給程式 c 語言樣式的命令列引數)。當通過 get 方式呼叫時,該變數包含query string。
說明包含當執行於命令列(cli)下時傳遞給當前指令碼的引數的陣列。
note: 第乙個引數總是當前指令碼的檔名,因此 $argv[0] 就是指令碼檔名。
note: 這個變數僅在 register_argc_argv 開啟時可用。
總結:直接引用這個變數就知道那些引數被傳遞給指令碼,或直接使用它。
PHP中全域性變數和超全域性變數
自定義全域性變數的作用域為當前的指令碼檔案的任意位置 函式或者方法啊之類的 但是要想用它們必須先執行一下 global variable語句 variable為要使用的全域性變數 或者是使用 global 變數名字 來呼叫。超全域性變數作用於也是為當前的指令碼檔案的任意位置,在使用的時候無需先執行 ...
PHP中的超全域性變數
php 中的許多預定義變數都是 超全域性的 這意味著它們在乙個指令碼的全部作用域中都可用。gl obal s server ge t post fi les cookie se ssio n request env globals globals 引用全域性作用域中可用的全部變數 server se...
PHP 超全域性變數
globals 包含乙個引用指向每個當前指令碼的全域性範圍內有效的變數。該陣列的鍵名為全域性變數的名稱。從 php 3 開始存在 globals 陣列。server 變數由 web 伺服器設定或者直接與當前指令碼的執行環境相關聯。類似於舊陣列 http server vars 陣列 依然有效,但反對...