<?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