php常用魔術方法

2021-08-31 11:37:16 字數 2539 閱讀 2614

魔術方法和建構函式__construct和複製物件時自動呼叫的函式__clone相似,都是在執行某一操作時會被呼叫,通常和乙個關鍵字相連。

通常情況下在類中會定義私有屬性,這是為了保護資料而使用的措施,但是也給我們帶來了麻煩。想要修改它們的值時,是通過呼叫我們定義的介面函式來完成的。每次需要修改變數都要呼叫不同的介面,這是比較麻煩的,所以php提供了乙個魔術方法__set()來方便我們的賦值操作

__set()語法:

authority(訪問控制關鍵字)function __set($ varname(要賦值的成員屬性名),$ value(要給成員屬性付的值))

__set()函式接受兩個引數

**演示:

<?php 

class testelse

} if($varname=='***')else

} }public function info()

} $tom=new test();

$tom->name='湯姆';

$tom->age=18;

$tom->***='男';

$tom->info();

$tom->***='女';

從上面的**可以看出,雖然兩個成員屬性是私有的,但是也可以在外部賦值,這就是__set()發揮了作用

__get()的作用是在類的外部訪問類的私有成員屬性的時候,會自動呼叫__get()方法返回屬性的值,它有乙個引數用來接收屬性名

__get()語法:

authority(訪問控制關鍵字)函式__get($ varname(要訪問的成員方法名))

**示例:

<?php 

class test

if($varname=='age'||$varname=='***')else

} public function __construct($name,$age,$***)

} $tom=new test('湯姆',19,'男');

注意:如果中的條件判斷語句是兩個等號,不要丟掉,這是血的教訓啊,眼都要找瞎了從**可以看出,語句在外部直接訪問了類的私有成員屬性而程式是沒有報錯的,這是因為呼叫了__get()方法。當然,我們也可以在__get()方法中加一些條件限制,來控制訪問的許可權

__call()函式用於物件訪問的函式不存在或沒有足夠的訪問許可權時會被系統自動呼叫

__call()語法:

authority(訪問控制關鍵字)函式__call($ varname(要呼叫的成員方法名),$ value(要呼叫方法的引數列表))

**示例:

從上面的**可以看出,在訪問不存在的成員函式得到()和私有函式你好()時,自動呼叫了__call()並輸出提示

__callstatic()的功能和__call()的功能是一樣的,只不過是針對靜態函式的.__ callstatic()是針對呼叫靜態函式而定義的函式

__callstatic()語法:

public(訪問控制關鍵字必須為public)static(必須被修飾為靜態方法)function __callstatic($ varname,$ values)

**示例:

靜態方法這樣呼叫:

php常用魔術方法

1.call 當使用乙個未定義的方法時呼叫此方法 2.autoload 使用尚未被定義的類時自動呼叫。通過此函式,指令碼引擎在 php 出錯失敗前有了最後乙個機會載入所需的類加粗樣式 3.construct 當乙個物件被建立時呼叫此方法,好處是可以使構造方法有乙個獨一無二的名稱,無論它所在的類的名稱...

PHP常用魔術方法總結

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

PHP 常用的魔術方法

建構函式 construct 析構函式 destruct 當呼叫乙個未定義 包括沒有許可權訪問 的方法是呼叫此方法 call 處理靜態方法呼叫 callstatic 當呼叫乙個未定義的屬性時訪問此方法 get 給乙個未定義的屬性賦值時呼叫 set 當在乙個未定義的屬性上呼叫isset 函式時呼叫此方...