魔術方法: 是指某些情況下,會自動調用的方法,稱為魔術方法
我們先認識下,下面的這些常用的魔術方法:__Tostring () __Call () __autoLoad () __isset () __unset ()
/***
魔術方法:
是指某些情況下,會自動調用的方法,稱為魔術方法
PHP面向對象中,提供了這幾個魔術方法,
他們的特點 都是以雙下劃線__開頭的
__construct(), __destruct(), __call(), __callStatic(), __get(), __set(), __isset(), __unset(), __sleep(), __wakeup(), __toString(), __invoke(), __set_state() 和 __clone()
__construct :構造方法
__destruct :析構方法
__clone() :克隆方法,當對象被克隆時,將會自動調用
***/
//__clone() :克隆方法,當對象被克隆時,將會自動調用
class Human {
public$age = 22;
publicfunction __clone() {
echo'有人克隆我!假冒';
}
}
$lisi = new Human();
$zhangsan = clone $lisi;
/*
結果:
有人克隆我!假冒
*/
?>
1.__Tostring() 用於定義輸出對象引用時調用 常用於打印一些對象的信息必須有返回值
2.__isset() 判斷類中不可見屬性或方法是否存在時自動調用
我們先介紹一下isset方法,該方法用於判定屬性和方法是否存在
如果我們使用isset(per->$name); // 返回值是false,但是$name屬性的確存在,怎麼解決呢?
1.將$name定義為私有屬性
2.在類定義中添加
這樣,再次調用isset($name);返回值就為true了;
3.__unset() 清除類中私有變量時自動調用
與之結合的是unset() ,可以刪除屬性,當我們需要刪除類中屬性的時候,公有屬性我們可以直接
刪除,如果是私有屬性我們僅僅通過這個方法就無法實現了
那到底怎樣實現呢?我們可以使用__unset()方法實現這個功能但我們需要在類中添加
然後我們再調用unset($name);就可以刪除person類中的私有屬性$name了
4.__call()方法當調用類實例中不存在的函數時 [自動執行]
如果試圖調用類中不存在的函數,會出現語法錯誤
這時我們可以在類中聲明Call()方法;
5.__autoLoad [自動加載] 使用的類文件 該函數是在引用的頁面添加
我們都使用過這樣情況,在頁面中需要調用其他php文件,我們需要使用include方法
但是如果有幾十個頁面需要引用,未免太過繁瑣,我們可以在該頁面中使用autoload方法
這樣凡是引用到其他類的地方,都會自動引用該類文件 前提類文件的名稱必須是 類名.php
內容就到這裡了, 大家都學會了嗎,沒有的話,QQ搜索【php學習特邀群】,可以一起交流下這些有趣的東西,也可以來這裡學習~等你來
閱讀更多 魚與之於漁 的文章