亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 編程 > PHP > 正文

PHP的魔術常量(變量)、魔術方法(函數)、超

2020-03-22 19:27:52
字體:
來源:轉載
供稿:網友
這篇文章主要介紹了關于PHP的魔術常量(變量)、魔術方法(函數)、超html' target='_blank'>全局變量的介紹,有著一定的參考價值,現在分享給大家,有需要的朋友可以參考一下

一、魔術常量(魔術變量)

概念:所謂的魔術常量就是PHP預定義的一些常量,這些常量會隨著所在的位置而變化。

1、__LINE__ 獲取文件中的當前行號。

2、__FILE__ 獲取文件的完整路徑和文件名。

3、__DIR__ 獲取文件所在目錄。

4、__FUNCTION__ 獲取函數名稱(PHP 4.3.0 新加)。

5、__CLASS__ 獲取類的名稱(PHP 4.3.0 新加)。

6、__METHOD__ 獲取類的方法名(PHP 5.0.0 新加)。

7、__NAMESPACE__ 當前命名空間的名稱(區分大小寫)。

8、__TRAIT__ Trait 的名字(PHP 5.4.0 新加)。自 PHP 5.4 起此常量返回 trait 被定義時的名字(區分大小寫)。Trait 名包括其被聲明的作用區域(例如 Foo/Bar)。

二、超全局變量(9個)

1、$GLOBALS :儲存全局作用域中的變量
2、$_SERVER :獲取服務器相關信息
3、$_REQUEST :獲取POST和GET請求的參數
4、$_POST : 獲取表單的POST請求參數
5、$_GET: 獲取表單的GET請求參數
6、$_FILES :獲取上傳文件的的變量
7、$_ENV : 獲取服務器端環境變量的數組
8、$_COOKIE:獲取瀏覽器的cookie

瀏覽器cookie的操作
設置cookie:setcookie(name, value, expire, path, domain);
獲取cookie:$_COOKIE[“user”];
刪除cookie:setcookie(“user”, “”, time()-3600);//設置過期時間

9、$_SESSION : 獲取session

服務端session的操作
使用session前一定要session_start()啟動session
儲存session:$_SESSION[‘name’]=”leixuesong”;//數組操作
銷毀session:unset($_SESSION[‘views’]);//銷毀一個
session_destroy()和unset($_SESSION);//銷毀所有的session

三、魔術方法(魔術函數)

概念:PHP 將所有以 __(兩個下劃線)開頭的類方法保留為魔術方法。所以在定義類方法時,除了上述魔術方法,建議不要以 __ 為前綴。

分別為: __construct(), __destruct(), __call(), __callStatic(), __get(), __set(), __isset(), __unset(), __sleep(), __wakeup(), __toString(), __invoke(), __set_state(), __clone() 和 __debugInfo() 等方法在 PHP 中被稱為 魔術方法 (Magic methods)。在命名自己的類方法時不能使用這些方法名,除非是想使用其魔術功能。

1、__construct() 構造函數:每次創建新對象(實例化對象)時先調用此方法,所以非常適合在使用對象之前做一些初始化工作。

應用筆記:如果子類中定義了構造函數則不會隱式調用其父類的構造函數。要執行父類的構造函數,需要在子類的構造函數中調用 parent::__construct()。如果子類沒有定義構造函數則會如同一個普通的類方法一樣從父類繼承(假如沒有被定義為 private 的話)。

應用范例:

 ?phpclass BaseClass { function __construct() { print In BaseClass constructor/n }class SubClass extends BaseClass { function __construct() { parent::__construct();  print In SubClass constructor/n }class OtherSubClass extends BaseClass { // inherits BaseClass s constructor}// In BaseClass constructor$obj = new BaseClass();// In BaseClass constructor// In SubClass constructor$obj = new SubClass();// In BaseClass constructor$obj = new OtherSubClass();? 

2、__destruct() 析構函數:析構函數會在到某個對象的所有引用都被刪除或者當對象被顯式銷毀時執行。

和構造函數一樣,父類的析構函數不會被引擎暗中調用。要執行父類的析構函數,必須在子類的析構函數體中顯式調用 parent::__destruct()。此外也和構造函數一樣,子類如果自己沒有定義析構函數則會繼承父類的。

析構函數即使在使用 exit() 終止腳本運行時也會被調用。在析構函數中調用 exit() 將會中止其余關閉操作的運行。

應用筆記:

1.析構函數在腳本關閉時調用,此時所有的 HTTP 頭信息已經發出。腳本關閉時的工作目錄有可能和在 SAPI(如 apache)中時不同。

2.試圖在析構函數(在腳本終止時被調用)中拋出一個異常會導致致命錯誤。

應用范例:

 ?phpclass A{ function __construct() { $a = func_get_args();  $i = func_num_args();  if (method_exists($this,$f= __construct .$i)) {  call_user_func_array(array($this,$f),$a); function __construct1($a1) echo( __construct with 1 param called: .$a1.PHP_EOL); function __construct2($a1,$a2) echo( __construct with 2 params called: .$a1. , .$a2.PHP_EOL); function __construct3($a1,$a2,$a3) echo( __construct with 3 params called: .$a1. , .$a2. , .$a3.PHP_EOL);}$o = new A( sheep $o = new A( sheep , cat $o = new A( sheep , cat , dog // results:// __construct with 1 param called: sheep// __construct with 2 params called: sheep,cat// __construct with 3 params called: sheep,cat,dog? 

3、 __call() :在對象中調用一個不可訪問方法時,__call() 會被調用。

public mixed __call ( string $name , array $arguments )

參數是要調用的方法名稱。參數是一個枚舉數組,包含著要傳遞給方法的參數。

 ?phpclass MethodTest { public function __call($name, $arguments)  { // 注意: $name 的值區分大小寫  echo Calling object method $name  . implode( , , $arguments). /n  } /** PHP 5.3.0之后版本 */  public static function __callStatic($name, $arguments)  { // 注意: $name 的值區分大小寫  echo Calling static method $name  . implode( , , $arguments). /n }$obj = new MethodTest;$obj- runTest( in object context MethodTest::runTest( in static context // PHP 5.3.0之后版本? 

4、__callStatic(): 在靜態上下文中調用一個不可訪問方法時,__callStatic() 會被調用。

5、__set() : 在給不可訪問屬性賦值時,__set() 會被調用。

6、__get() : 讀取不可訪問屬性的值時,__get() 會被調用。

7、__isset() : 當對不可訪問屬性調用 isset() 或 empty() 時,__isset() 會被調用。

8、__unset() : 當對不可訪問屬性調用 unset() 時,__unset() 會被調用。

9、__sleep() :方法常用于提交未提交的數據,或類似的清理操作。同時,如果有一些很大的對象,但不需要全部保存,這個功能就很好用。

serialize() 函數會檢查類中是否存在一個魔術方法 __sleep()。如果存在,該方法會先被調用,然后才執行序列化操作。此功能可以用于清理對象,并返回一個包含對象中所有應被序列化的變量名稱的數組。如果該方法未返回任何內容,則 NULL 被序列化,并產生一個 E_NOTICE 級別的錯誤。與之相反,unserialize() 會檢查是否存在一個 __wakeup() 方法。如果存在,則會先調用 __wakeup 方法,預先準備對象需要的資源。

10、__wakeup() :經常用在反序列化操作中,例如重新建立數據庫連接,或執行其它初始化操作。

應用范例:

 ?phpclass Connection { protected $link; private $server, $username, $password, $db;  public function __construct($server, $username, $password, $db) { $this- server = $server;  $this- username = $username;  $this- password = $password;  $this- db = $db;  $this- connect(); private function connect() $this- link = mysql_connect($this- server, $this- username, $this- password);  mysql_select_db($this- db, $this- link); public function __sleep() return array( server , username , password , db  public function __wakeup() $this- connect();? 

11、__toString() :__toString() 方法用于一個類被當成字符串時回應。例如 echo $obj; 應該顯示些什么。此方法必須返回一個字符串,否則將發出一條 E_RECOVERABLE_ERROR 級別的致命錯誤。

 ?php// Declare a simple classclass TestClass{ public $foo; public function __construct($foo)  { $this- foo = $foo; } public function __toString() { return $this- }$class = new TestClass( Hello echo $class; //輸出 Hello? 

11、__invoke() :當嘗試以調用函數的方式調用一個對象時,__invoke() 方法會被自動調用。(本特性只在 PHP 5.3.0 及以上版本有效)

 ?phpclass CallableClass { function __invoke($x) { var_dump($x);$obj = new CallableClass;$obj(5);var_dump(is_callable($obj)); // is_callable — 檢測參數是否為合法的可調用結構
? 以上會輸出:int(5)bool(true)

12、__set_state() :自 PHP 5.1.0 起當調用 var_export() 導出類時,此靜態 方法會被調用。本方法的唯一參數是一個數組,其中包含按 array( property = value, ...) 格式排列的類屬性。

應用范例:

 ?phpclass A{ public $var1; public $var2; public static function __set_state($an_array) // As of PHP 5.1.0 { $obj = new A; $obj- var1 = $an_array[ var1 $obj- var2 = $an_array[ var2 return $obj;}$a = new A;$a- var1 = 5;$a- var2 = foo eval( $b = . var_export($a, true) . // $b = A::__set_state(array( // var1 = 5, // var2 = foo , // ));var_dump($b);? 以上例程會輸出:object(A)#2 (2) { [ var1 ]=  int(5) [ var2 ]= string(3) foo }

13、__clone():對象復制。當復制完成時,如果定義了 __clone() 方法,則新創建的對象(復制生成的對象)中的 __clone() 方法會被調用,可用于修改屬性的值(如果有必要的話)

應用范例:

 ?phpclass SubObjectstatic $instances = 0; public $instance; public function __construct() { $this- instance = ++self::$instances; public function __clone() {  $this- instance = ++self::$instances;}class MyCloneablepublic $object1; public $object2; function __clone() // 強制復制一份this- object, 否則仍然指向同一個對象  $this- object1 = clone $this- object1;}$obj = new MyCloneable();$obj- object1 = new SubObject();$obj- object2 = new SubObject();$obj2 = clone $obj;print( Original Object:/n print_r($obj);print( Cloned Object:/n print_r($obj2);以上例程會輸出:Original Object:MyCloneable Object( [object1] = SubObject Object [instance] = 1 [object2] = SubObject Object [instance] = 2Cloned Object:MyCloneable Object( [object1] = SubObject Object [instance] = 3 [object2] = SubObject Object [instance] = 2)

以上就是本文的全部內容,希望對大家的學習有所幫助,更多相關內容請關注PHP !

相關推薦:

php中static、final、interface、abstract的區別

PHP empty()函數的說明

PHP測試memcached 的方法

以上就是PHP的魔術常量(變量)、魔術方法(函數)、超全局變量的介紹的詳細內容,PHP教程

鄭重聲明:本文版權歸原作者所有,轉載文章僅為傳播更多信息之目的,如作者信息標記有誤,請第一時間聯系我們修改或刪除,多謝。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
欧美日韩国产中文字幕| 国产精品一二三视频| 北条麻妃一区二区三区中文字幕| 国产美女精品视频免费观看| 国产精品入口免费视| 成人午夜一级二级三级| 深夜福利日韩在线看| 性欧美办公室18xxxxhd| 欧美最猛性xxxxx(亚洲精品)| 久久久久国产视频| 国产精品一区二区av影院萌芽| 尤物精品国产第一福利三区| 一区二区三区四区在线观看视频| 亚洲第一精品自拍| 欧美日韩亚洲一区二| 欧美日韩第一页| 亚洲美女激情视频| 国产一区二区黑人欧美xxxx| 狠狠躁18三区二区一区| 国产午夜精品免费一区二区三区| 欧美激情区在线播放| 国产在线精品一区免费香蕉| 欧美日韩国产精品专区| 国产精品91久久| 国产成人精品免高潮费视频| 欧美极品美女视频网站在线观看免费| 日韩欧美精品网站| 精品亚洲永久免费精品| 国产91精品最新在线播放| 亚洲成av人片在线观看香蕉| 亚洲第一页中文字幕| 国产精彩精品视频| 成人av电影天堂| 国产精品成人一区二区三区吃奶| 久久综合88中文色鬼| 成人在线观看视频网站| 91国产精品电影| 欧美电影免费播放| 中文字幕日韩精品在线| 欧美性精品220| 色妞在线综合亚洲欧美| 国产午夜精品一区理论片飘花| 久久躁日日躁aaaaxxxx| 美女999久久久精品视频| 国产欧美精品一区二区三区-老狼| 日韩免费在线视频| 亚洲最大成人在线| 欧洲成人性视频| 懂色aⅴ精品一区二区三区蜜月| 欧洲美女7788成人免费视频| 两个人的视频www国产精品| 久久久久久这里只有精品| 欧洲亚洲女同hd| 久久久国产精品亚洲一区| 精品久久中文字幕久久av| 国产精品一区av| 国产成人福利夜色影视| 伊人男人综合视频网| 亚洲精品资源美女情侣酒店| 国产999精品视频| 成人黄色av网| 91欧美视频网站| 日韩av免费看网站| 亚洲国产精品网站| 亚洲成人性视频| 高清在线视频日韩欧美| 亚洲男人第一网站| 亚洲欧美日韩第一区| 久久精品国产亚洲7777| 欧美激情视频一区二区| 2019av中文字幕| 国产午夜精品视频| 91精品国产高清久久久久久91| 成人网在线免费看| 国产亚洲精品久久久| 2021国产精品视频| 日韩视频欧美视频| 欧美性在线视频| 91老司机在线| 亚洲欧洲日产国产网站| 欧美一级淫片aaaaaaa视频| 久久久久久久久久久免费精品| 欧美视频第一页| 91精品久久久久久久久久久久久久| 欧美成年人在线观看| 久久夜色撩人精品| 日韩av免费在线| 久久91超碰青草是什么| 亚洲精品国产精品国产自| 91免费的视频在线播放| 日韩经典一区二区三区| 成人免费观看a| 国产精品精品视频| 国产精品日韩在线播放| 九九热精品在线| 欧美激情一区二区三区高清视频| 精品福利视频导航| 欧美区二区三区| 日韩电影免费在线观看中文字幕| 日韩高清电影免费观看完整| 国产91免费观看| 亚洲第一在线视频| 精品国偷自产在线| 国产香蕉精品视频一区二区三区| 欧美成人免费在线视频| 亚洲国产成人在线播放| 欧美性猛交xxxx乱大交蜜桃| 一区二区三区天堂av| 这里只有精品久久| www.日韩av.com| 亚洲欧美另类国产| 欧美精品www| 亚洲免费伊人电影在线观看av| 国产精品成人品| 亚洲高清av在线| 久久理论片午夜琪琪电影网| 亚洲欧美精品一区二区| 精品国产福利在线| 亚洲xxxx18| 日本精品视频在线观看| 成人精品一区二区三区电影黑人| 亚洲性69xxxbbb| 亚洲人成在线一二| 97精品国产97久久久久久免费| 久久99亚洲精品| www.日韩视频| 精品精品国产国产自在线| 国产欧美精品久久久| 国模gogo一区二区大胆私拍| 欧美www在线| 久久亚洲精品中文字幕冲田杏梨| 国产精品天天狠天天看| 亚洲最新中文字幕| 国产69精品久久久| 久久精品免费电影| 欧美性感美女h网站在线观看免费| 欧美第一页在线| 日韩欧美中文字幕在线观看| 尤物九九久久国产精品的分类| 久久久久久久久久久网站| 亚洲香蕉av在线一区二区三区| 欧美性猛交xxx| 国产精品18久久久久久首页狼| 国产精品免费久久久| 亚洲综合社区网| xxxx性欧美| 国产精品美女在线观看| 国产成人在线视频| 国产精品女视频| 精品视频久久久| 久久99久国产精品黄毛片入口| 亚洲精品99久久久久中文字幕| 永久免费看mv网站入口亚洲| 亚洲va国产va天堂va久久| 日韩成人网免费视频| 亚洲精品乱码久久久久久按摩观| 深夜福利国产精品| 欧美激情视频在线免费观看 欧美视频免费一| 大胆人体色综合| 欧美性极品xxxx做受| 亚洲人成亚洲人成在线观看| 97在线免费视频| 欧美一级大片在线观看| 国产成人一区二区在线|