對php面向對象中魔術方法的認識

<?php
//header(charset="utf8");
    //echo 'hey 這裏是描述我對php 面向對象中各類魔術方法的認識。';
/*
 *魔術方法是在一些特定狀況下會自動調用的一些php系統自定義函數
 *這些函數都頗有個性,他們統一以__兩個 _ (下劃線)開頭。
 * 下面對於php 中這些經常使用的魔術方法一些我的認識。
 **/
class demo {
    public $name;
    public $age;

//當實例化這個類,首先會自動調用的方法 __construct (構造函數)
//注意,在一些特定場合將構造函數寫成了私有方法時,須要用靜態方法實例化這個類
function __construct($name,$age){
    echo '實例化本類最早執行的函數<br>';
    $this->name = $name;    //這樣以來至關於初始化了這個實例。
    $this->age  = $age;
}


//當對象被克隆時觸發的函數 __clone()
function __clone(){
    echo '發現克隆體<br>';
}

//當咱們訪問一個不存在的或者無權限訪問的屬性時。觸發函數 __get
//當訪問private,protected等屬性都會觸發該函數
function __get($value){
    echo '你正要訪問的'.$value.'屬性沒法訪問<br>';
}

//設置屬性與屬性值,對已經存在的屬性設置不會觸發函數 __set
function __set($key,$value){
    echo "你所要設置的屬性名爲$key,屬性值爲$value<br>";
}

//當在一個未定義(包括 protected/private)的屬性上調用 isset() 時,調用__isset()
function __isset($value){
    echo '你所訪問的屬性不存在<br>';
}


//在刪除一個不可訪問的屬性時間觸發 __unset()
function __unset($value){
    echo "你這要刪除一個名爲".$value."的屬性<br>";
}



//析構函數指的是當某個對象的全部引用被刪除,或者對象被顯式的銷燬時會執行的函數。 __destruct(析構函數)
//能夠說這個方法是在程序的最後面執行的
function __destruct(){
    echo '程序跑到尾聲才觸發的一個函數';
}
}
$demo = new demo('zhang','1');
//unset($demo->ss);//你這要刪除一個名爲ss的屬性
//isset($demo->sss);//你所訪問的屬性不存在
//你所要設置的屬性名爲gender,屬性值爲nan
//$demo->gender = 'nan';    //不存在的屬性出發__set 方法
//$demo->name = 'jian';    //已存在的屬性直接設置。
//echo $demo->name;
//$demo->ss;//你正要訪問的ss屬性沒法訪問
//$demo1 = clone($demo);    //此時處罰了clone() 方法
?>
php

相關文章
相關標籤/搜索