日本不卡不码高清免费观看,久久国产精品久久w女人spa,黄色aa久久,三上悠亚国产精品一区二区三区

您的位置:首頁技術文章
文章詳情頁

php反序列化之魔術方法超詳細講解

瀏覽:356日期:2022-06-06 08:16:51
目錄
  • php魔術方法
  • __construct()與__destruct()
  • __call
  • __get
  • __set
  • __isset
  • __unset
  • __sleep
  • __wakeup
  • __toString
  • __invoke

php魔術方法

在php類保留方法中以 “__”兩個下劃線開頭的函數稱為魔術方法,我的理解為php類設計中自定義好的函數。

常見的魔術方法有:

__construct(),類的構造函數
__destruct(),類的析構函數
__call(),在對象中調用一個不可訪問方法時調用
__callStatic(),用靜態方式中調用一個不可訪問方法時調用
__get(),獲得一個類的成員變量時調用
__set(),設置一個類的成員變量時調用
__isset(),當對不可訪問屬性調用isset()或empty()時調用
__unset(),當對不可訪問屬性調用unset()時被調用
__sleep(),執行serialize()時,先會調用這個函數
__wakeup(),執行unserialize()時,先會調用這個函數
__toString(),類被當成字符串時的回應方法
__invoke(),調用函數的方式調用一個對象時的回應方法
__set_state(),調用var_export()導出類時,此靜態方法會被調用
__clone(),當對象復制完成時調用
__autoload(),嘗試加載未定義的類
__debugInfo(),打印所需調試信息

__construct()與__destruct()

__construct() 構造函數與 __destruct() 析構函數,與其他的語言如java,c#,一樣,構造函數就是在對象實例化的時候先執行初始化的方法。

__construct()構造函數只有在new 一個對象的時候會觸發,在serialize 序列化和unserialize反序列化中都不會觸發

<?phpclass demo1{    private $k1;    public function __construct()    {echo("構造函數被調用"."<br>");    }    public  function f1(){echo("f1 函數被調用");    }}echo("0000"."<br>");$f=new demo1();echo("1111"."<br>");$a=serialize($f);echo("2222"."<br>");unserialize($a);?>

輸出結果

__destruct() 析構函數則在對象銷毀和serialize 反序列化的情況下會被觸發。如下

<?phpclass demo1{    private $k1;    public function __destruct()    {echo("析構函數被調用"."<br>");    }}$f=new demo1();echo("0000"."<br>");$a=serialize($f);echo("1111"."<br>");unset($f);echo("2222"."<br>");unserialize($a);?>

輸出結果

__call

__call 魔術方法的作用是當前對象調用一個不存在的方法時,就會被觸發

<?phpclass demo1{    private $k1;    public  function f1(){echo("f1 函數被調用");    }	  //當調用不存在的方法時,方法名作為參數傳到$name 變量,方法名的輸入參數傳到arguments參數列表中    public function __call($name, $arguments)    {// TODO: Implement __call() method.echo($name."---".$arguments[0]);    }}$f=new demo1();$f->f2("123");//調用不存在的方法f2()?>

輸出結果

__get

__get() 魔術方法是當訪問一個對象不存在的變量時就會被觸發

<?phpclass demo1{    private $k1;    public  function f1(){echo("f1 函數被調用");    }    public function __get($name)//不存在的變量k會以參數傳到$name    {echo($name);    }}$f=new demo1();$f->k;//不存在的變量k?>

輸出結果

__set

__set() 魔術方法是當給一個對象不存在的變量賦值時就會被觸發

<?phpheader("Content-Type:text/html;charset=utf-8");highlight_file(__FILE__);class demo1{    private $k1;    public  function f1(){echo("f1 函數被調用");    }    public function __set($name, $value)    {echo($name."---".$value);    }}$f=new demo1();$f->k=123; //給不存在的成員變量賦值?>

輸出結果

__isset

當對不可訪問屬性調用isset()或empty()時會觸發,例如訪問類的私有屬性,類不存在的成員屬性

<?phpheader("Content-Type:text/html;charset=utf-8");highlight_file(__FILE__);class demo1{    private $k1;    public  function f1(){echo("f1 函數被調用");    }    public function __isset($name)    {       echo($name);    }}$f=new demo1();$f2=unserialize(serialize($f));//反序列化isset($f2->k1);//使用isset方法判斷私有成員屬性k1empty($f2->k1);//使用empty方法判斷私有成員屬性k1?>

輸出結果

__unset

當嘗試使用unset() 銷毀函數去銷毀一個不可訪問的成員屬性時會觸發,不可訪問(包括私有成員屬性,不存在的成員屬性)

<?phpheader("Content-Type:text/html;charset=utf-8");highlight_file(__FILE__);class demo1{    private $k1;    public  function f1(){echo("f1 函數被調用");    }    public function __unset($name)    {echo($name);    }}$f=new demo1();$f2=unserialize(serialize($f));//反序列化unset($f2->k1);//使用unset銷毀私有成員屬性k1unset($f2->faaa);//使用unset銷毀不存在的成員屬性faaa?>

輸出結果

__sleep

當對象被serialize 序列化時觸發調用__sleep

<?phpheader("Content-Type:text/html;charset=utf-8");highlight_file(__FILE__);class demo1{    private $k1;    public  function f1(){echo("f1 函數被調用");    }    public function __sleep()    {echo("在被序列化時被調用");    }}$f=new demo1();echo("00000"."</br>");serialize($f);?>

輸出結果

__wakeup

當進行unserialize 反序列化對象時,__wakeup魔術方法會被觸發,看起來__wakeup與__sleep 觸發條件是相反的

<?phpheader("Content-Type:text/html;charset=utf-8");highlight_file(__FILE__);class demo1{    private $k1;    public  function f1(){echo("f1 函數被調用");    }    public function __wakeup()    {echo("在被反序列化時被調用");    }}$f=new demo1();$uz=serialize($f);echo("00000"."</br>");unserialize($uz);?>

輸出結果

__toString

如果一個對象類中存在__toString魔術方法,這個對象類被當做字符串進行處理時,就會觸發__toString魔術方法,而不會產生錯誤

<?phpheader("Content-Type:text/html;charset=utf-8");highlight_file(__FILE__);class demo1{    private $k1;    public  function f1(){echo("f1 函數被調用");    }    public function __toString()    {echo("__toString 被觸發了");return "";    }}$f=new demo1();echo($f);?>

輸出結果

__invoke

當一個對象類中存在__invoke魔術方法,這個對象類被當作函數進行調用時,就會觸發__invoke魔術方法,而不會產生錯誤

<?phpheader("Content-Type:text/html;charset=utf-8");highlight_file(__FILE__);class demo1{    private $k1;    public  function f1(){echo("f1 函數被調用");    }    public function __invoke()    {       echo("__invoke 被觸發了");    }}$f=new demo1();$f();?>

輸出結果

到此這篇關于php反序列化之魔術方法超詳細講解的文章就介紹到這了,更多相關php反序列化 內容請搜索以前的文章或繼續瀏覽下面的相關文章希望大家以后多多支持!

標簽: PHP
日本不卡不码高清免费观看,久久国产精品久久w女人spa,黄色aa久久,三上悠亚国产精品一区二区三区
亚洲大全视频| 国语对白精品一区二区| 国产在线观看www| 加勒比视频一区| 国产一区一一区高清不卡| 国产精品777777在线播放| 久久99青青| 欧美韩日一区| 精品国产亚洲日本| 国产精品极品国产中出| 国产精品蜜月aⅴ在线| 国产精品美女午夜爽爽| 免费视频一区二区三区在线观看| 久久亚洲黄色| 深夜视频一区二区| 亚洲欧洲一区| 中文字幕中文字幕精品| 最近国产精品视频| 国产乱码精品一区二区亚洲| 六月丁香综合在线视频| 国产色播av在线| 99成人超碰| 亚洲欧美视频一区二区三区| 亚洲最新av| 国产精品色在线网站| 在线手机中文字幕| 伊人久久亚洲热| 一区二区三区午夜视频| 婷婷亚洲成人| 美腿丝袜亚洲三区| 久久中文字幕av一区二区不卡| 久久国产高清| 国产精品久久久久久久久久齐齐 | 久久精品国产999大香线蕉| 久久精品国产一区二区| 亚洲天堂1区| 久久亚洲影院| 国产精品任我爽爆在线播放| 久久电影tv| 亚洲综合日韩| 免费视频一区二区三区在线观看| 色老板在线视频一区二区| 亚洲一区国产一区| 国产精品777777在线播放| 久久精品av| 日本高清久久| 精品午夜久久| 亚洲欧洲另类| 里番精品3d一二三区| 91国语精品自产拍| 国产精品一站二站| 国精品一区二区| 国产精品中文字幕亚洲欧美| 欧美日韩一区二区综合| 日韩国产欧美三级| 成人日韩在线观看| 欧美日韩1区| 国产一区日韩一区| 国产日韩视频在线| 欧美日韩国产欧| 久久精品亚洲一区二区| 国产偷自视频区视频一区二区| 国产精品www.| 亚洲欧美视频| 久久影院午夜精品| 欧美一级全黄| 欧美在线亚洲| 91视频久久| 欧美三级第一页| 欧美午夜不卡影院在线观看完整版免费| 国产精选久久| 热久久国产精品| 日韩不卡免费高清视频| 久久国产精品免费一区二区三区| 婷婷中文字幕一区| 国产一区二区三区免费在线| 视频一区二区不卡| 日本不良网站在线观看| 国产日韩亚洲| 亚洲日产国产精品| 欧美精品一区二区久久| 日韩av二区| 免费在线观看一区| 91精品视频一区二区| 男人天堂欧美日韩| 久久久久美女| 成人午夜网址| 国产精品久久久亚洲一区| 亚洲日产av中文字幕| 国产模特精品视频久久久久| 日韩一区欧美| 国产精品综合| 日韩中文字幕无砖| 黄色精品网站| 久久蜜桃av| 日韩一区亚洲二区| 国产在线观看91一区二区三区| 久久精品999| 天海翼精品一区二区三区| 狠狠操综合网| 久久久五月天| 青青久久av| 欧美少妇精品| 精品久久亚洲| 国产精品久久亚洲不卡| 婷婷精品在线观看| 亚洲一区观看| 亚洲v在线看| 欧美日韩免费看片| 丝袜诱惑一区二区| 日韩精品诱惑一区?区三区| 日韩av在线播放网址| 久久精品免费看| 久久精品国产99| 久久久久亚洲精品中文字幕| 国产精品乱战久久久| 国产精品视频一区二区三区综合| 欧美日韩一区二区三区不卡视频 | 国产一区二区三区网| 欧美国产先锋| 国产精品男女| 欧美a在线观看| 你懂的国产精品| 国产精品一区免费在线| 国产精品中文| 欧美激情日韩| 久久久久久婷| 日韩中文在线电影| 丝袜美腿一区| 久久精品免费一区二区三区| 久久国产主播| 激情久久久久久| 午夜久久黄色| 亚洲女人av| 一本一道久久a久久| 蜜臀av性久久久久蜜臀aⅴ流畅| 中文无码久久精品| 欧美亚洲国产日韩| 亚洲激情偷拍| 蜜桃av一区二区三区电影| 亚洲精品一二三**| 日韩精品欧美成人高清一区二区| 日韩av在线免费观看不卡| 国产伦精品一区二区三区在线播放| 国产精品magnet| 成人在线丰满少妇av| 成人免费电影网址| 午夜精品一区二区三区国产| 中文日韩在线| 日韩av字幕| 国产一区2区| 激情综合自拍| 日韩欧美2区| 久久一区亚洲| 欧美综合另类| 天堂久久av| 韩日一区二区| 九一成人免费视频| 色综合视频一区二区三区日韩| 国产美女视频一区二区| 日韩综合在线| 亚洲一区国产一区| 国产日韩欧美中文在线| 四季av一区二区凹凸精品| 激情欧美丁香| 亚洲一区av| 国产一区二区三区四区| 亚洲国产一区二区在线观看| 日韩av在线播放中文字幕| 97精品中文字幕| 欧美在线综合| 久久成人福利| 91精品99| 国产精品片aa在线观看 | 国产aa精品| 亚洲免费中文| 久久久久九九精品影院| 亚洲播播91| 日韩精品亚洲aⅴ在线影院| 国产福利电影在线播放| 蜜桃久久久久久| 成人亚洲精品| 中文字幕亚洲在线观看| 欧美韩日一区| 日韩超碰人人爽人人做人人添| 日韩欧美看国产| 日本免费新一区视频| 久久精品欧美一区| 国产毛片久久久| 欧美在线亚洲综合一区| 免费亚洲婷婷| 亚洲一二三区视频| 国产传媒在线| 日韩国产欧美在线视频| re久久精品视频| 久久精品国产福利| 亚洲免费专区| 精品一区免费| 国产 日韩 欧美 综合 一区| 日韩午夜视频在线|