国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 編程 > PHP > 正文

php中的常用魔術(shù)方法匯總

2020-03-22 19:07:44
字體:
供稿:網(wǎng)友
這篇文章詳細(xì)的對php中的常用魔術(shù)方法進(jìn)行了整理歸納,分享給大家供大家參考,具體內(nèi)容如下1、PHP把所有”__”開頭的方法當(dāng)做魔術(shù)方法,所以任何自定義的方法都不能是”__”開頭
php提供的重載,是指動態(tài)的創(chuàng)建屬性或方法。重載是通過魔術(shù)方法來實(shí)現(xiàn)的。這些魔術(shù)方法的參數(shù)不能飲用傳遞,__get(),__set(),__isset(),__unset(),實(shí)現(xiàn)類屬性重載。
2、當(dāng)訪問類中不可訪問的屬性時,將調(diào)用__get()方法
3、當(dāng)訪問類中不可訪問的屬性時,根據(jù)不同的情況會調(diào)用__get(),__set(),__isset(),__unset(),其中當(dāng)訪問屬性 時,使用函數(shù)isset()或empty()時,將調(diào)用__isset()方法使用unset()函數(shù)時,將調(diào)用__unset()方法。
4、這四個方法不能使用html' target='_blank'>static關(guān)鍵詞定義,在php5.3.0后,一個warning級別的警告將發(fā)生,當(dāng)使用static方法定義這4個方法。
5、何謂不可訪問的屬性:(1)類中沒有的屬性,(2)私有變量在類外被訪問。方法重載,通過__call()和__callstatic()來實(shí) 現(xiàn),兩者的區(qū)別是一個上下文環(huán)境是否是靜態(tài)方法,后者在調(diào)用不可訪問的靜態(tài)方法時會被調(diào)用。__callstatic()是在php5.3.0中才被添 加。
6、__sleep()和__wakeup()
serialize()序列化時,會先檢查是否存在__sleep()函數(shù),如果存在,則先調(diào)用__sleep(),返回一個包含所有變量名稱的數(shù)組,如果該方法不返回任何內(nèi)容,則null被序列化,并產(chǎn)生一個notice級別的錯誤。
__wakeup()方法和__sleep()相反,在調(diào)用unserialize()時被調(diào)用
7、__toString(),讓一個類決定它如何轉(zhuǎn)換成字符串,在php5.2.0之前,這個方法只能結(jié)合echo或print方法生效,php5.2.0之后,可以結(jié)合printf()修飾,但修飾的時候也不能用類似%d之類的非字符修飾符。
8、__invoke(),當(dāng)嘗試以調(diào)用函數(shù)的方式調(diào)用對象時,將出發(fā)這個函數(shù),只在php5.3之后生效。
9、__set_state()靜態(tài)方法,當(dāng)調(diào)用var_export()的時候,才會調(diào)用這個靜態(tài)方法,php5.1.0之后生效。唯一參數(shù)是接收一個數(shù)組。
10、__construct()和__destruct(),構(gòu)造函數(shù)和析構(gòu)函數(shù),構(gòu)造函數(shù)主要用于類的初始化,析構(gòu)函數(shù)在某個對象的所有引用都 刪除后或者對象被顯示的銷毀時運(yùn)行。在析構(gòu)函數(shù)中不允許拋出異常,否則會出發(fā)一個fatal error,析構(gòu)函數(shù)在腳本結(jié)束時調(diào)用,此時所有的http header都已經(jīng)發(fā)出.
11、__clone(),對象復(fù)制,此方法不能直接被調(diào)用,必須通過clone關(guān)鍵字顯示調(diào)用代碼://實(shí)例化對象時,會調(diào)用對象的__construct方法$obj = new Object();//給對象不存在的屬性賦值時,會調(diào)用對象的__set方法$obj- title = "hello";//使用對象不存在的屬性時,會調(diào)用對象的__get方法echo $obj- title;//調(diào)用對象不存在的方法時,會調(diào)用對象的__call方法$obj- test("hello",123,567);//調(diào)用不存在的類靜態(tài)方法時,會調(diào)用類的__callStatic方法Object::staticMethod("static","not found method");//直接輸出對象時,會調(diào)用對象的__toString方法echo $obj;//將一個對象當(dāng)作函數(shù)一樣使用時,會調(diào)用對象的__invoke方法echo $obj("test");//克隆對象時,會調(diào)用對象的__clone方法$obj2 = clone $obj;//判斷對象屬性是否存在時,會調(diào)用對象的__isset方法var_dump(isset($obj- aaa));//銷毀對象屬性時,會調(diào)用對象的__unset方法unset($obj- aaa);PHP教程

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

發(fā)表評論 共有條評論
用戶名: 密碼:
驗(yàn)證碼: 匿名發(fā)表
主站蜘蛛池模板: 溧阳市| 江永县| 湘乡市| 东光县| 宿松县| 临高县| 沈丘县| 南投市| 镇巴县| 乐东| 阜南县| 宜君县| 屯留县| 湖州市| 鄄城县| 永昌县| 平泉县| 措美县| 广河县| 庆城县| 若尔盖县| 赤峰市| 宜君县| 临江市| 尖扎县| 曲阳县| 新兴县| 清河县| 水城县| 昭通市| 潍坊市| 阳西县| 榆中县| 大竹县| 武城县| 松溪县| 甘孜| 连城县| 红安县| 类乌齐县| 双鸭山市|