成人在线亚洲_国产日韩视频一区二区三区_久久久国产精品_99国内精品久久久久久久

您的位置:首頁技術(shù)文章
文章詳情頁

php反序列化之魔術(shù)方法超詳細(xì)講解

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

php魔術(shù)方法

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

常見的魔術(shù)方法有:

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

__construct()與__destruct()

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

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

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

輸出結(jié)果

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

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

輸出結(jié)果

__call

__call 魔術(shù)方法的作用是當(dāng)前對象調(diào)用一個不存在的方法時,就會被觸發(fā)

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

輸出結(jié)果

__get

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

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

輸出結(jié)果

__set

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

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

輸出結(jié)果

__isset

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

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

輸出結(jié)果

__unset

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

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

輸出結(jié)果

__sleep

當(dāng)對象被serialize 序列化時觸發(fā)調(diào)用__sleep

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

輸出結(jié)果

__wakeup

當(dāng)進(jìn)行unserialize 反序列化對象時,__wakeup魔術(shù)方法會被觸發(fā),看起來__wakeup與__sleep 觸發(fā)條件是相反的

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

輸出結(jié)果

__toString

如果一個對象類中存在__toString魔術(shù)方法,這個對象類被當(dāng)做字符串進(jìn)行處理時,就會觸發(fā)__toString魔術(shù)方法,而不會產(chǎn)生錯誤

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

輸出結(jié)果

__invoke

當(dāng)一個對象類中存在__invoke魔術(shù)方法,這個對象類被當(dāng)作函數(shù)進(jìn)行調(diào)用時,就會觸發(fā)__invoke魔術(shù)方法,而不會產(chǎn)生錯誤

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

輸出結(jié)果

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

標(biāo)簽: PHP
成人在线亚洲_国产日韩视频一区二区三区_久久久国产精品_99国内精品久久久久久久
国产在线视频一区二区| 色综合久久久网| 国产精品尤物| 中文av一区特黄| 你懂的国产精品| 精品国产一区久久| 成人免费毛片嘿嘿连载视频| 久久综合亚州| 石原莉奈在线亚洲三区| 色综合久久天天| 日韩电影在线免费看| 欧美专区在线| 亚瑟在线精品视频| 亚洲一区三区视频在线观看| 亚洲自拍都市欧美小说| 国产视频一区免费看| 亚洲精品免费在线播放| 亚洲美女一区| 亚洲一区二区三区四区在线观看| 亚洲一区影院| 午夜精品福利久久久| 色8久久精品久久久久久蜜| 日韩电影免费在线看| 在线国产亚洲欧美| 老司机免费视频一区二区| 欧美日韩高清一区| 国产成人av一区二区三区在线| 精品久久久久久久久久久久久久久 | 日韩一区二区三区四区| 大胆欧美人体老妇| 久久亚洲一级片| 亚洲图片在线观看| 亚洲最色的网站| 免费在线亚洲欧美| 免费成人美女在线观看.| 欧美日韩精品是欧美日韩精品| 国产成人免费视频网站| 国产亚洲精品aa| 狠狠88综合久久久久综合网| 亚洲曰韩产成在线| 91九色最新地址| 国产精品一卡二| 国产日韩欧美精品一区| 99精品国产99久久久久久福利| 亚洲大片免费看| 欧美性欧美巨大黑白大战| 成人综合婷婷国产精品久久蜜臀 | 成人免费视频一区| 亚洲国产成人午夜在线一区| 99热这里只有精品8| 天堂成人免费av电影一区| 欧美日韩大陆一区二区| 91污片在线观看| 亚洲人妖av一区二区| 久久精品一区| 国产激情视频一区二区三区欧美| 久久久久久久久久久久久夜| 国产综合色一区二区三区| 亚洲一区二区不卡免费| 欧美日韩不卡一区| 午夜视频精品| 亚洲成人综合视频| 欧美一级夜夜爽| 亚洲电影成人| 久久国产麻豆精品| 久久久亚洲午夜电影| 一本一道久久综合狠狠老精东影业| 亚洲va欧美va人人爽| 欧美精品第1页| 欧美女人交a| 日韩有码一区二区三区| 欧美一区二区视频观看视频| 好吊视频一区二区三区四区| 日本欧美加勒比视频| 精品久久久久久久久久久久久久久| 亚洲国产精品毛片| 美女国产一区二区| 欧美激情自拍偷拍| 日本精品视频一区二区| 91丨porny丨最新| 天天综合天天做天天综合| 欧美成人欧美edvon| 国产精品主播| 成年人网站91| 午夜精品福利一区二区蜜股av| 精品免费日韩av| 噜噜噜噜噜久久久久久91| 成人国产亚洲欧美成人综合网| 亚洲狠狠丁香婷婷综合久久久| 91精品国产高清一区二区三区蜜臀| 国产一区欧美| 精品亚洲成a人| 亚洲视频1区2区| 91精品欧美久久久久久动漫| 国产日韩欧美一区二区三区四区| 国产不卡一区视频| 亚洲高清免费观看高清完整版在线观看 | 色综合中文字幕国产| 国产精品国产三级国产普通话三级| 91高清视频免费看| 国内精品久久国产| 国产一区二区三区av电影| 玉米视频成人免费看| 精品99999| 欧美日韩亚洲综合在线| 9国产精品视频| 99国产精品视频免费观看| 日本三级亚洲精品| 中文字幕日韩一区二区| 日韩一二三区视频| 91久久精品一区二区三区| 国内久久视频| 豆国产96在线|亚洲| 舔着乳尖日韩一区| 国产精品成人免费在线| 欧美大片顶级少妇| 在线精品视频一区二区三四| 红杏aⅴ成人免费视频| 国产黄色91视频| 日韩极品在线观看| 亚洲免费av高清| 国产亚洲va综合人人澡精品| 91精品国产综合久久福利 | 国产亚洲一区字幕| 欧美日韩成人一区二区| 一道本一区二区| 欧美一区视频| 国产成人精品一区二区三区四区| 首页亚洲欧美制服丝腿| 亚洲人成亚洲人成在线观看图片| 精品国产乱码久久久久久闺蜜| 欧美日韩卡一卡二| 一本到不卡精品视频在线观看| 亚洲精品女人| 欧美日韩国产不卡在线看| 粗大黑人巨茎大战欧美成人| 精品一区免费av| 天天av天天翘天天综合网| 国产精品色婷婷| 久久久久久电影| 日韩美女天天操| 5858s免费视频成人| 在线观看日韩电影| 亚洲一区二区在线看| 亚洲国产精品一区二区第一页| 91美女片黄在线观看| 高清shemale亚洲人妖| 国产乱码字幕精品高清av| 久久97超碰国产精品超碰| 蜜桃久久久久久久| 日本va欧美va瓶| 五月激情六月综合| 午夜精品爽啪视频| 亚洲成av人片在www色猫咪| 亚洲一区二区三区在线看| 亚洲色图一区二区三区| 中文字幕一区在线| 中文字幕一区av| 国产精品久久久久久久久免费桃花| 国产日韩欧美不卡| 国产欧美一区二区精品忘忧草 | 日本一区二区在线不卡| 日韩三级伦理片妻子的秘密按摩| 欧美酷刑日本凌虐凌虐| 欧美日韩日本视频| 欧美另类久久久品| 7777精品伊人久久久大香线蕉的| 欧美日本视频在线| 欧美精品久久99久久在免费线| 欧美日韩一区二区在线观看| 欧美三级日韩三级国产三级| 欧美日韩另类国产亚洲欧美一级| 欧美日韩一区在线| 777a∨成人精品桃花网| 日韩小视频在线观看专区| 欧美成va人片在线观看| 精品对白一区国产伦| 国产午夜精品福利| 国产午夜精品一区二区三区视频| 国产欧美视频一区二区| 欧美国产成人在线| ...中文天堂在线一区| 亚洲伦理在线精品| 亚洲成a天堂v人片| 日韩av一区二区在线影视| 久久精品国产精品亚洲红杏| 国产剧情一区二区| 成人av片在线观看| 欧美一区二区视频在线| 国产精品国产一区二区| 亚洲国产日韩综合一区| 亚洲女同同性videoxma| 在线视频观看一区| 91精品国产91久久综合桃花 | 天天色综合天天| 久热成人在线视频| 成人综合婷婷国产精品久久蜜臀| 91免费版在线看| 亚洲激情自拍| 欧美亚洲一级|