已經學習的魔術方法
__construct()
__destruct()
__clone()
1.6.1__tostring()、__invoke()
__tostring()
:將物件當成字串使用的時候自動呼叫
__invoke()
:將物件當成函式使用的時候自動呼叫
<?php
class
student
//把物件當成函式使用的時候自動執行
public
function
__invoke()
}$stu
=new
student
;echo
$stu
;//當成字串使用
$stu()
;//當成函式使用
1.6.2__set()、__get()、__isset()、__unset()
__set($k
,$v):給無法訪問的屬性賦值的時候自動執行
__get($k
):獲取無法訪問的屬性值的時候自動呼叫
__isset($k
):判斷無法訪問的屬性是否存在自動呼叫
__unset($k
):銷毀無法訪問的屬性的時候自動執行
例題
<?php
class
student
//獲取無法訪問的屬性值的時候自動呼叫
public
function
__get($k
)//判斷無法訪問的屬性是否存在自動呼叫
public
function
__isset($k
)//銷毀無法訪問的屬性的時候自動執行
public
function
__unset($k
)}//測試
$stu
=new
student
;//1、給私有屬性賦值
$stu
->
name
='tom'
;$stu
->
***=
'男';
$stu
->
age=22;
//2、獲取私有屬性的值
//echo $stu->name;
//3、判斷私有屬性是否存在
//var_dump(isset($stu->name));
//4、銷毀私有屬性
unset
($stu
->
age)
;print_r
($stu
);
應用:設定讀寫屬性
<?php
class
student
屬性是唯讀屬性";
}public
function
__get($k
)是只寫屬性";
}}//測試
$stu
=new
student
;$stu
->
name
='tom'
;$stu
->
age=22;
echo
'姓名:'
.$stu
->
name,'
';echo
.$stu
->
add,''
;
1.6.3__call()、__callstatic()
__call
():呼叫無法訪問的方法時自動執行
__callstatic
():呼叫無法訪問的靜態方法時自動執行
例題:
<?php
class
student
不存在";}
//呼叫無法訪問的靜態方法時自動執行
public
static
function
__callstatic
($fn_name
,$fn_args
)靜態方法不存在";
}}//測試
$stu
=new
student
;$stu
->
show(10
,20);
student:
:show()
;
1.6.4__sleep()、__wakeup()
__sleep
():當序列化的時候自動呼叫
__wakeup
():當反序列化的時候自動呼叫
例題
<?php
class
student
/** *序列化的時候自動呼叫
*@return array 序列化的屬性名
*/public
function
__sleep()
//反序列化的時候自動呼叫
public
function
__wakeup()
}//測試
$stu
=new
student
('tom'
,'男');
$str
=serialize
($stu);
//序列化
$stu
=unserialize
($str);
//反序列化
print_r
($stu
);
php魔術常量,魔術方法
魔術常量 1。line 返回檔案中的當前行號。2。file 返回檔案的完整路徑和檔名。如果用在包含檔案中,則返回包含檔名。自php4.0.2 起,file 總是包含乙個絕對路徑,而在此之前的版本有時會包含乙個相對路徑。3。function 返回函式名稱 php4.3.0 新加 自php5 起本常量返...
invoke 魔術 PHP 魔術方法
php 魔術方法 構造方法 construct 析構方法 destruct get 與 set unset call 和 callstatic sleep 和 wakeup clone tostring invoke set state debuginfo construct 這個方法應該是最常用的...
php魔術方法
php5魔術方法 魔術函式 1。construct 建構函式 例項化物件時被呼叫,當 construct和以類名為函式名的建構函式同時存在時,construct將被呼叫,另乙個不被呼叫。2。destruct 析構函式 當刪除乙個物件或物件操作終止時被呼叫 程式結束後物件就摧毀 永遠都是最後執行的。3...