剛開始學習魔術方法時對__get()、__set() 和__call()的用法和作用不是太了解,也有一些誤解。。。
__get()、__set() 和__call()是很常用的,雖然不像__construct、__destruct運用的那麼多,但是它們地位也是毋庸置疑的,
__construct、__destruct大家肯定非常熟悉了,在這就不多說了,直接看—————__get()、__set() 和__call();
1. __call :
規則:
mixed __call(string$name,array
$arguments)
當呼叫類中不存在的方法時,就會呼叫__call();
為了更好的理解,看一下例子:
<?phpclass
test
} $ob=new
test();
$ob->hello(1,2);
?>
上面的例子將輸出:
hello
array(
[0]=>1
[1]=>2
2.__get() 和__set():
規則:
get :mixed __get(string
$name
)set:void __set(
string
$name ,mixed
$value)
__get()是訪問不存在的成員變數時呼叫的;
__set()是設定不存在的成員變數時呼叫的;
為了更好的理解,看一下例子:
<?phpclass
test
public
function __get($x
)
} $a = new
test;
$a->b = 1 ;//
成員變數b不存在,所以會呼叫__set
$a->c = 2;//
成員變數c存在,所以無任何輸出
$d=$a->b;//
成員變數b不存在,所以會呼叫__get
?>
上面的例子將輸出:
bthe value of b is 1
希望可以幫到大家!
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 了...