超全域性變數 8個 與魔術方法

2021-08-17 02:50:12 字數 1948 閱讀 4333

1. 超全域性變數

1.  $globals----->所有的變數都放在裡面

2.  $_server----->關於報頭、路徑和指令碼位置的資訊。

3.  $_request----->用於收集 html 表單提交的資料。

4.  $_post----->廣泛用於收集提交 method="post" 的 html 表單後的表單資料。

5.  $_get

6.  $_files

7.  $_env----->通過環境方式傳遞給當前指令碼的變數的陣列。

8.  $_cookie----->通過 http cookies 方式傳遞給當前指令碼的變數的陣列。

9.  $_session----->當前指令碼可用 session 變數的陣列。

2. 魔術方法

在php中以兩個下劃線開頭的方法,被稱為"魔術方法"。如果希望php呼叫這些魔術方法,首先必須在類中定義,否則php不會執行未建立的魔術方法。

php所提供的"過載"(overloading)是指動態地"建立"類屬性和方法。我們是通過魔術方法(magic methods)來實現的。

當呼叫當前環境下未定義或不可見的類屬性或方法時,過載方法會被呼叫。所有的過載方法都必須被宣告為public。

1.      __get()

讀取不可訪問屬性的值時。

2.       __set()

在給不可訪問屬性賦值時。

3.       __isset()

當對不可訪問屬性呼叫isset()或empty() 時

4.      __unset ()

當對不可訪問屬性呼叫unset()時

其他魔術方法:

5.      __construct()

物件建立時呼叫。

6.      __destruct ()

物件銷毀時呼叫。

7.      __tostring()

將物件當作字串一樣使用時會被呼叫

8.      __clone()

轉殖物件

預設的,物件都是按引用傳值的。因此,在將乙個物件賦值給另乙個變數時,只是建立了指向該物件的乙個引用,並沒有複製該物件。為了實現真正得複製乙個物件,我們需要使用clone關鍵字。這種「按引用傳遞」的策略同樣適用於包含在物件內部的物件。即使我們轉殖了乙個物件,在物件內部的任何物件都不會被轉殖,因此最終的結果是兩個物件共享了同乙個內部物件。

當對乙個物件使用clone關鍵字時,該魔術方法會被呼叫。在這個魔術方法裡,我們可以實現任何子物件的轉殖。

9.      __call()

呼叫不存在或不可訪問的方法時會被呼叫。

3. 魔術變數

php 向它執行的任何指令碼提供了大量的預定義常量。不過很多常量都是由不同的擴充套件庫定義的,只有在載入了這些擴充套件庫時才會出現,或者動態載入後,或者在編譯時已經包括進去了。

有八個魔術常量它們的值隨著它們在**中的位置改變而改變。

__line__

-----檔案中的當前行號。

__file__-----

檔案的完整路徑和檔名。

__dir__

檔案所在的目錄。

__function__

函式名稱

__class__

類的名稱

__trait__

trait 的名字

__method__

類的方法名

__namespace__

當前命名空間的名稱

超全域性變數 魔術變數 魔術函式

php中預定義9個超級全域性變數,8個魔術變數和13個魔術函式。超全域性變數 globals 儲存全域性作用域中的變數 server 獲取伺服器相關資訊 request 獲取post和get請求的引數 get 獲取get請求方法的表單資料 post 獲取post請求方法的表單資料 files 獲取上...

魔術常量,超全域性變數

魔術常量 line 在源 中插入當前源 行號 file 在原始檔中插入當前源檔名 date 在原始檔中插入當前的編譯日期 time 在原始檔中插入當前編譯時間 method method 是php5之後新增的魔術常量,表示的是類文法的名稱 function 返回函式名稱 php4.3.0 新加 自p...

全域性變數global與超全域性變數 GLOBALS

出錯行 mysqli query link,select from sys calendar where id id link為連線資料庫,此處為空。解決方法 link不能從global獲取,改為 globals link mysqli query globals link select from ...