php中的常用魔術方法總結

2022-10-06 12:54:20 字數 2151 閱讀 9807

常用的魔術方法有:__tostring ()  __call()  __autoload()  __程式設計客棧 clone()  __get()   __set()    __isset()  __unset()

1.__tostring()用於定義輸出物件引用時呼叫  常用於列印一些物件的資訊 必須有返回值

eg:有乙個persion類

persion per =new persion()

echo per;    //直接呼叫會出錯

我們可以在類的定義中新增__tostring()方法

複製** **如下:

function  __tostring()

2.__clone()物件的複製

引用賦值

$per1=$per2; 而這在記憶體中只有一塊位址

而$per1=clone $per2   這時有兩塊記憶體位址

3.__call()方法 當呼叫類例項中不存在的函式時自動執行

如果試圖呼叫類中不存在的函式,會出現語法錯誤,為了能夠友好的提示

我們可以在類中宣告call()方法;

複製** **如下:

functwww.cppcns.comion __call($funname,$argu)

4.__autoload 自動載入使用的類檔案  該函式是在引用的頁面新增

我們都使用過這樣情況,在頁面中需要呼叫其他php檔案,我們需要使用include方法

但是如果有幾十個頁面需要引用,未免太過繁瑣,我們可以在該頁面中使用autoload方法

複製** **如下:

function __autoload($classname)

這樣凡是引用到其他類的地方,都會自動引用該類檔案  前提類檔案的名稱必須是   類名.php

5.__get()   訪問類中私有屬性

如果類中的屬性設定為私有屬性,在類的例項中是無法訪問的,但怎樣才能訪問呢?

我們就可以使用__get()

eg :

類中有複製** **如下:

class person

例項化 person per=new person()

per->$name; //這樣是取不到值的

但是如果我們在類中增加__get方法

複製** **如下:

function __get($proname)

我們再次呼叫per->$name 就可以訪問了

這樣做有人會提出疑問了,這樣可以直接訪問私有變數,和宣告成公有的有什麼區別呢?

如果宣告成公有的,我們可以任意讀取,如果是私有,如果我們增加了get方法,那麼每次呼叫私有屬性都會呼叫get方法的內容,這樣我們就可以在get方法中增加一些邏輯處理。

6.__set()設定類中的私有屬性

原理同上,我們可以再類中新增__set()函式,每當通過呼叫類例項給私有屬性賦值,都會執行__set函式 ,函式原型:

複製** **如下:

function __set($proname,$value)

既然是方法賦值,我們就可以做一些邏輯處理

7.__isset() 判斷類中私有屬性或方法是否存在時自動呼叫

首先我們先介紹一下isset 方法,該方法用於判定屬性和方法是否存在,但是我們無法通過類類例項判斷類中的某個私有屬性是否存在

如果我們使用isset(per->$name);//返回值是false,但是$name屬性的確存在,怎麼解決呢?

解決方法:

1.將$name定義為私有屬性

2.在類定義中新增

複製** **如下:

function __isset($proname)

這樣的話我們再次呼叫isset($name);返回值就為true了;

8.__unset()清除類中私有變數時自動呼叫

與之結合的是unset() unset方法可以刪除屬性,當我們需要刪除類中屬性的時候,如果是公有屬性我們可以直接

刪除,但是如果是私有我們只通過該方法就無法實現了

怎樣實現呢我們可以使用__unset()方法實現該功能我們需要在類中新增

複製** **如下:

function __unset($proname)

現在我們再呼叫unset($name);就可以刪除person類中的私有屬性$name了

本文標題: php中的常用魔術方法總結

本文位址:

PHP常用魔術方法總結

常用的魔術方法有 tostring call autoload clone get set isset unset 1.tostring 用於定義輸出物件引用時呼叫 常用於列印一些物件的資訊 必須有返回值 eg 有乙個 persion類 persion per new persion echo pe...

PHP中的常用魔術方法

魔術方法 是指某些情況下,會自動呼叫的方法,稱為魔術方法 php物件導向中,提供了這幾個魔術方法,他們的特點都是 以雙下劃線 開頭的 construct 構造方法 destruct 析構方法 clone 轉殖方法 當物件被格隆時,將會自動呼叫 例 class human lisi new human...

php中的常用魔術方法彙總

1 php把所有 開頭的方法當做魔術方法,所以任何自定義的方法都不能是 開頭 php提供的過載,是指動態的建立屬性或方法。過載是通過魔術方法來實現的。這些魔術方法的引數不能飲用傳遞,get set isset unset 實現類屬性過載。2 當訪問類中不可訪問的屬性時,將呼叫 get 方法 3 當訪...