PHP魔術方法和魔術常量介紹及使用

2021-07-26 01:12:41 字數 2639 閱讀 3108

有些東西如果不是經常使用,很容易忘記,比如魔術方法

和魔術常量。

php中把以兩個下劃線__開頭的方法稱為魔術方法,這些方法在php中充當了舉足輕重的作用。 魔術方法包括:

建構函式和析構函式應該不陌生,他們在物件建立和消亡時被呼叫。例如我們需要開啟乙個檔案,在物件建立時開啟,物件消亡時關閉

<?php

class

fileread

function

__destruct()}

?>

這兩個方法在繼承時可以擴充套件,例如:

<?php

class

tmpfileread

extends

fileread

function

__destruct()}

?>

在物件中呼叫乙個不可訪問方法時會呼叫這兩個方法,後者為靜態方法。這兩個方法我們在可變方法(variable functions)呼叫中可能會用到。

<?php

class

methodtest

public

static

function

__callstatic

($name, $arguments)

}$obj = new methodtest;

$obj->runtest('in object context');

methodtest::runtest('in static context');

?>

當get/set乙個類的成員變數時呼叫這兩個函式。例如我們將物件變數儲存在另外乙個陣列中,而不是物件本身的成員變數

<?php

class

methodtest

public

function

__get

($name)

public

function

__isset

($name)

public

function

unset

($name)

}?>

當我們在執行serialize()unserialize()時,會先呼叫這兩個函式。例如我們在序列化乙個物件時,這個物件有乙個資料庫鏈結,想要在反序列化中恢復鏈結狀態,則可以通過重構這兩個函式來實現鏈結的恢復。例子如下:

<?php

class

connection

private

function

connect

() public

function

__sleep

() public

function

__wakeup()}

?>

物件當成字串時的回應方法。例如使用echo $obj;來輸出乙個物件

<?php

// declare a ****** class

class

testclass

}$class = new testclass();

echo $class;

?>

這個方法只能返回字串,而且不可以在這個方法中丟擲異常,否則會出現致命錯誤。

呼叫函式的方式呼叫乙個物件時的回應方法。如下

<?php

class

callableclass

}$obj = new callableclass;

var_dump(is_callable($obj));

?>

呼叫var_export()匯出類時,此靜態方法會被呼叫。

<?php

classa}

$a = new a;

$a->var1 = 5;

$a->var2 = 'foo';

var_dump(var_export($a));

?>

當物件複製完成時呼叫。例如在設計模式

詳解及php實現:單例模式一文中提到的單例模式實現方式,利用這個函式來防止物件被轉殖。

<?php

public

class

singleton

public

static

function

getinstance

() return

self::$_instance;

}// 防止轉殖例項

public

function

__clone()}

?>

php中的常量大部分都是不變的,但是有8個常量會隨著他們所在**位置的變化而變化,這8個常量被稱為魔術常量。

這些魔術常量常常被用於獲得當前環境資訊或者記錄日誌。

PHP魔術方法和魔術常量

具體的解釋如下 1。construct 例項化物件時被呼叫,當 construct和以類名為函式名的函式同時存在時,construct將被呼叫,另乙個不被呼叫。2。destruct 當刪除乙個物件或物件操作終止時被呼叫。3。call 物件呼叫某個方法,若方法存在,則直接呼叫 若不存在,則會去呼叫 c...

PHP魔術方法和魔術常量

具體的解釋如下 1。construct 例項化物件時被呼叫,當 construct和以類名為函式名的函式同時存在時,construct將被呼叫,另乙個不被呼叫。2。destruct 當刪除乙個物件或物件操作終止時被呼叫。3。call 物件呼叫某個方法,若方法存在,則直接呼叫 若不存在,則會去呼叫 c...

php魔術常量和魔術方法

1.概述 get 獲取私有屬性值的時候呼叫 set 設定私有屬性值的時候呼叫 construct 構造方法 destruct 析構方法 unset 觸發時機 當銷毀乙個私有成員屬性的時候呼叫 引數 屬性名 isset 觸發時機 當判斷乙個私有成員屬性是否被設定過時呼叫 引數 屬性名 invoke 了...