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

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

PHP基礎之類和對象15——魔術方法

瀏覽:21日期:2022-09-14 18:39:41
?__construct(),__destruct(),__call(),__callStatic(),__get(),__set(),__isset(),__unset(),__sleep(),__wakeup(),__toString(),__invoke(),__set_state()和?__clone()?等方法在 PHP 中被稱為'魔術方法'(Magic methods)。在命名自己的類方法時不能使用這些方法名,除非是想使用其魔術功能。

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

__sleep()?和?__wakeup()

publicarray__sleep?( void )

void__wakeup?( void )

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

注意:

__sleep()?不能返回父類的私有成員的名字。這樣做會產生一個?E_NOTICE?級別的錯誤。可以用?Serializable?接口來替代。

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

與之相反,?unserialize()?會檢查是否存在一個?__wakeup()?方法。如果存在,則會先調用?__wakeup?方法,預先準備對象需要的資源。

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

Example #1 Sleep 和 wakeup

class 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(); }}__toString()

public string?__toString?( void )

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

不能在?__toString()?方法中拋出異常,這么做會導致致命錯誤。

Example #2 簡單示例

class TestClass{ public $foo; public function __construct($foo) {$this->foo = $foo; } public function __toString(){return $this->foo; }}$class = new TestClass(’Hello’);echo $class;

輸出結果:

Hello

需要指出的是在 PHP 5.2.0 之前,__toString()?方法只有在直接使用于?echo?或?print?時才能生效。PHP 5.2.0 之后,則可以在任何字符串環境生效(例如通過?printf(),使用?%s?修飾符),但不能用于非字符串環境(如使用?%d?修飾符)。自 PHP 5.2.0 起,如果將一個未定義?__toString()?方法的對象轉換為字符串,會產生?E_RECOVERABLE_ERROR?級別的錯誤。

__invoke()

mixed__invoke?([?$...?] )

當嘗試以調用函數的方式調用一個對象時,__invoke()?方法會被自動調用。

注意:

本特性只在 PHP 5.3.0 及以上版本有效。

Example #3 使用?__invoke()

class CallableClass{ function __invoke($x){var_dump($x); }}$obj = new CallableClass;$obj(5);var_dump(is_callable($obj));

輸出結果:

int(5)

bool(true)

__set_state()

static object?__set_state?( array?$properties?)

自 PHP 5.1.0 起當調用?var_export()?導出類時,此靜態方法會被調用。

本方法的唯一參數是一個數組,其中包含按?array(’property’ => value, ...)?格式排列的類屬性。

Example #4 使用?__set_state()>(PHP 5.1.0 起)

class A{ public $var1; public $var2; public static function __set_state($an_array) {$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).’;’);var_dump($b);

輸出結果:

object(A)#2 (2) { ['var1']=> int(5) ['var2']=> string(3) 'foo' }

標簽: PHP
相關文章:
日本不卡不码高清免费观看,久久国产精品久久w女人spa,黄色aa久久,三上悠亚国产精品一区二区三区
久久三级中文| 日韩中文字幕| 在线观看免费一区二区| 欧美aaaaaa午夜精品| 天堂俺去俺来也www久久婷婷| 成人久久久久| 久久精品九色| 日韩中文字幕无砖| 国产精品女主播一区二区三区| 久久久久久久久丰满| 中文字幕在线免费观看视频| 久久精品免视看国产成人| 国产欧美日韩| 国产欧美日韩视频在线| 欧美视频二区| 久久av影院| 国产精品嫩模av在线| 国产欧美另类| 久久男人av| 群体交乱之放荡娇妻一区二区| 色在线视频观看| 成人自拍av| 亲子伦视频一区二区三区| 日韩毛片视频| 91成人精品视频| 免费人成黄页网站在线一区二区| 久久成人一区| 欧美一区激情| 国产suv精品一区| 久久uomeier| 午夜一级久久| 国产欧美一区二区色老头| 国产一区二区三区91| 久久婷婷一区| 免费看日韩精品| 97久久亚洲| 九九精品调教| 女人天堂亚洲aⅴ在线观看| 日本不卡中文字幕| 精品日韩一区| 欧美1级日本1级| 精品三级av| 国产欧美日韩精品一区二区三区| 欧美特黄一级| 国产麻豆一区二区三区精品视频| 色天使综合视频| 欧美自拍一区| 在线日韩欧美| 国产精一区二区| 不卡在线一区| 国产精品国码视频| 久久久久99| 亚洲免费专区| 一区二区小说| 成人国产精品一区二区免费麻豆| 日韩一区免费| 欧美日韩免费看片| 在线综合欧美| 久久久久久久久丰满| 久久男人av| 亚洲精品在线a| 久久精品免费一区二区三区 | 在线亚洲观看| 日韩精品首页| 久久精品国产久精国产| 中文字幕免费一区二区| 中文国产一区| 国产亚洲欧洲| 99在线|亚洲一区二区| 免费美女久久99| 欧美亚洲三级| 久久久久久黄| 宅男在线一区| 欧美日韩中文字幕一区二区三区| 日韩国产专区| 欧美在线黄色| 天堂俺去俺来也www久久婷婷| 免费观看在线综合| 91久久中文| 综合激情视频| 免费在线欧美视频| 夜久久久久久| 在线日韩电影| 黄色亚洲免费| 亚洲另类av| 国产精品日韩精品在线播放 | 国产aa精品| 成年男女免费视频网站不卡| 你懂的亚洲视频| 免费不卡在线观看| 日产精品一区二区| 国产亚洲在线| 亚洲综合中文| 国产亚洲在线| 精品国产午夜| 国产一区 二区| 蜜臀久久99精品久久久久宅男 | 亚洲天堂av影院| 国产美女久久| 日本亚洲最大的色成网站www | 久久久一本精品| 国产一区二区三区四区| 国产精品久久久久久久久久妞妞 | 精品久久不卡| 久久成人福利| 久久成人高清| 麻豆视频一区二区| 欧美1区2区3| 美腿丝袜亚洲一区| 国产欧美二区| 国产精品17p| 久久av免费| 麻豆视频久久| 精品欧美视频| 激情不卡一区二区三区视频在线| 国产精品久久久亚洲一区| 久久国产人妖系列| 国产精品激情| 美女视频一区在线观看| 久久麻豆视频| 国内一区二区三区| а√天堂8资源中文在线| 日韩高清欧美| 99视频精品全部免费在线视频| 亚洲电影有码| 91久久久精品国产| 蜜乳av另类精品一区二区| 中文视频一区| 91嫩草精品| 国产精品久久久久9999高清| 日本成人中文字幕在线视频| 日韩国产一二三区| 国产精品探花在线观看| 精品一区二区三区的国产在线观看| 精品国产日韩欧美精品国产欧美日韩一区二区三区 | 久久久夜精品| 婷婷精品进入| 中文字幕日韩欧美精品高清在线| 视频精品一区| 国产三级一区| 色婷婷综合网| 91超碰国产精品| 三级久久三级久久久| 欧美日韩中出| 久久精品国产99国产精品| 色天使综合视频| 午夜在线精品偷拍| 国产欧美久久一区二区三区| 成人国产精品一区二区网站| 欧美亚洲国产精品久久| 蜜臀精品一区二区三区在线观看 | 狠狠躁少妇一区二区三区| 在线日韩中文| 伊人久久一区| 国产精品99精品一区二区三区∴| 色一区二区三区四区| 国产综合婷婷| 视频一区中文字幕精品| 欧美成a人片免费观看久久五月天| 国产粉嫩在线观看| 亚洲欧美久久久| 国产精品xvideos88| 国产精品二区不卡| 99日韩精品| 国产探花在线精品一区二区| 在线天堂中文资源最新版| 91久久中文| 国产精品久久久久久久久久白浆| 精品国模一区二区三区| 天堂va在线高清一区| 风间由美中文字幕在线看视频国产欧美| 少妇久久久久| 日韩av成人高清| 电影亚洲精品噜噜在线观看| 亚洲久久视频| 色偷偷偷在线视频播放| 亚洲精品一级二级三级| 久久精品系列| 香蕉久久精品| 欧美另类中文字幕 | 成人免费电影网址| 免费在线成人网| 麻豆精品在线视频| 黄色成人精品网站| 久久av网址| 中文国产一区| 成人国产精品| 日精品一区二区三区| 亚洲精品一级二级| 日韩国产欧美在线播放| 日韩中文欧美| 日韩高清国产一区在线| 久久婷婷久久| 老色鬼精品视频在线观看播放| 国产偷自视频区视频一区二区| 精品国产三区在线| 亚洲免费专区| 美女亚洲一区| 成人午夜在线| 久久国产精品免费一区二区三区|