您好,登錄后才能下訂單哦!
<?php
//header(charset="utf8");
//echo 'hey 這里是描述我對php 面向?qū)ο笾懈鞣N魔術(shù)方法的認(rèn)識。';
/*
*魔術(shù)方法是在一些特定情況下會自動(dòng)調(diào)用的一些php系統(tǒng)自定義函數(shù)
*這些函數(shù)都很有個(gè)性,他們統(tǒng)一以__兩個(gè) _ (下劃線)開頭。
* 下面對于php 中這些常用的魔術(shù)方法一些個(gè)人認(rèn)識。
**/
class demo {
public $name;
public $age;
//當(dāng)實(shí)例化這個(gè)類,首先會自動(dòng)調(diào)用的方法 __construct (構(gòu)造函數(shù))
//注意,在一些特定場合將構(gòu)造函數(shù)寫成了私有方法時(shí),需要用靜態(tài)方法實(shí)例化這個(gè)類
function __construct($name,$age){
echo '實(shí)例化本類最先執(zhí)行的函數(shù)<br>';
$this->name = $name; //這樣以來相當(dāng)于初始化了這個(gè)實(shí)例。
$this->age = $age;
}
//當(dāng)對象被克隆時(shí)觸發(fā)的函數(shù) __clone()
function __clone(){
echo '發(fā)現(xiàn)克隆體<br>';
}
//當(dāng)我們訪問一個(gè)不存在的或者無權(quán)限訪問的屬性時(shí)。觸發(fā)函數(shù) __get
//當(dāng)訪問private,protected等屬性都會觸發(fā)該函數(shù)
function __get($value){
echo '你正要訪問的'.$value.'屬性無法訪問<br>';
}
//設(shè)置屬性與屬性值,對已經(jīng)存在的屬性設(shè)置不會觸發(fā)函數(shù) __set
function __set($key,$value){
echo "你所要設(shè)置的屬性名為$key,屬性值為$value<br>";
}
//當(dāng)在一個(gè)未定義(包括 protected/private)的屬性上調(diào)用 isset() 時(shí),調(diào)用__isset()
function __isset($value){
echo '你所訪問的屬性不存在<br>';
}
//在刪除一個(gè)不可訪問的屬性時(shí)間觸發(fā) __unset()
function __unset($value){
echo "你這要?jiǎng)h除一個(gè)名為".$value."的屬性<br>";
}
//析構(gòu)函數(shù)指的是當(dāng)某個(gè)對象的所有引用被刪除,或者對象被顯式的銷毀時(shí)會執(zhí)行的函數(shù)。 __destruct(析構(gòu)函數(shù))
//可以說這個(gè)方法是在程序的最后面執(zhí)行的
function __destruct(){
echo '程序跑到尾聲才觸發(fā)的一個(gè)函數(shù)';
}
}
$demo = new demo('zhang','1');
//unset($demo->ss);//你這要?jiǎng)h除一個(gè)名為ss的屬性
//isset($demo->sss);//你所訪問的屬性不存在
//你所要設(shè)置的屬性名為gender,屬性值為nan
//$demo->gender = 'nan'; //不存在的屬性出發(fā)__set 方法
//$demo->name = 'jian'; //已存在的屬性直接設(shè)置。
//echo $demo->name;
//$demo->ss;//你正要訪問的ss屬性無法訪問
//$demo1 = clone($demo); //此時(shí)處罰了clone() 方法
?>
免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。