PHP基礎(chǔ)之變量2——預(yù)定義變量
PHP 提供了大量的預(yù)定義變量。由于許多變量依賴(lài)于運(yùn)行的服務(wù)器的版本和設(shè)置,及其它因素,所以并沒(méi)有詳細(xì)的說(shuō)明文檔。一些預(yù)定義變量在 PHP 以命令行形式運(yùn)行時(shí)并不生效。
Warning
PHP 4.2.0 以及后續(xù)版本中,PHP 指令 register_globals 的默認(rèn)值為 off。這是 PHP 的一個(gè)主要變化。讓 register_globals 的值為 off 將影響到預(yù)定義變量集在全局范圍內(nèi)的有效性。例如,為了得到 DOCUMENT_ROOT 的值,將必須使用 $_SERVER[’DOCUMENT_ROOT’] 代替 $DOCUMENT_ROOT,又如,使用$_GET[’id’] 來(lái)代替 $id 從 URL http://www.example.com/test.php?id=3 中獲取 id 值,亦或使用 $_ENV[’HOME’] 來(lái)代替 $HOME 獲取環(huán)境變量 HOME 的值。
如果有可用的 PHP 預(yù)定義變量那最好用,如超全局?jǐn)?shù)組。
從 PHP 4.1.0 開(kāi)始,PHP 提供了一套附加的預(yù)定數(shù)組,這些數(shù)組變量包含了來(lái)自 web 服務(wù)器(如果可用),運(yùn)行環(huán)境,和用戶(hù)輸入的數(shù)據(jù)。這些數(shù)組非常特別,它們?cè)谌址秶鷥?nèi)自動(dòng)生效,例如,在任何范圍內(nèi)自動(dòng)生效。因此通常被稱(chēng)為自動(dòng)全局變量(autoglobals)或者超全局變量(superglobals)。(PHP 中沒(méi)有用戶(hù)自定義超全局變量的機(jī)制。)超全局變量羅列于下文中;但是為了得到它們的內(nèi)容和關(guān)于 PHP 預(yù)定義變量的進(jìn)一步的討論以及它們的本質(zhì),請(qǐng)參閱預(yù)定義變量。而且,你也將注意到舊的預(yù)定義數(shù)組($HTTP_*_VARS)仍舊存在。自 PHP 5.0.0 起, 用register_long_arrays 設(shè)置選項(xiàng)可禁用 長(zhǎng)類(lèi)型的 PHP 預(yù)定義變量數(shù)組。
Note: 可變變量
超級(jí)全局變量不能被用作函數(shù)或類(lèi)方法中的可變變量。
Note:
盡管超全局變量和 HTTP_*_VARS 同時(shí)存在,但是它們并不是同一個(gè)變量,所以改變其中一個(gè)的值并不會(huì)對(duì)另一個(gè)產(chǎn)生影響。
如果某些 variables_order 中的變量沒(méi)有設(shè)定,它們的對(duì)應(yīng)的 PHP 預(yù)定義數(shù)組也是空的。
相關(guān)文章:

網(wǎng)公網(wǎng)安備