php中的魔術方法應用例項
阿新 • • 發佈:2019-02-07
<?php //獲取當前類名 echo __CLASS__ ; //當前函式名(confirm echo __FUNCTION__ ; //當前方法名 (bankcard::confirm) echo __METHOD__ ; //在PHP5中,預定義了兩個函式“__get()”和“__set()”來獲取和賦值其屬性,__get()方法:這個方法用來獲取私有成員屬性值的,有一個引數,引數傳入你要獲取的成員屬性的名稱, //返回獲取的屬性值 class People{ private $name; //人的名子 private $sex; //人的性別 //__get()方法用來獲取私有屬性 function __get($propetyName){ echo 'get property' ; } /**__set()方法:這個方法用來為私有成員屬性設定值的,有兩個引數,第一個引數為你要為設定值的屬性名,第二個引數是要給屬性設定的值,沒有返回值。 這個方法同樣不用我們手工去呼叫,它也可以做成私有的,是在直接設定私有屬性值的時候自動呼叫的,同樣屬性私有的已經被封裝上 */ function __set($propetyName,$value){ echo 'set propery' ; $this->$propetyName = $value; } //__isset()方法: isset()是測定變數是否設定用的函式,傳入一個變數作為引數,如果傳入的變數存在則傳回true,否則傳回false。 function __isset($propertyName){ return isset($this->$nm); ; } // 當在類外部使用unset()函式來刪除私有成員時自動呼叫的<br>"; private function __unset($propertyName){ echo"當在類外部使用unset()函式來刪除私有成員時自動呼叫的<br>"; unset($this->$propertyName); } //__call() 當試圖呼叫一個物件並不存在的方法時,呼叫該方法。 public function __call($method,$arg){ echo '你想呼叫我不存在的方法',$method,'方法<br/>'; echo '還傳了一個引數<br/>'; echo print_r($arg),'<br/>'; } // 只有呼叫靜態方法的時候,靜態方法不存在才會呼叫這個方法 public static function __callStatic($method,$arg){ echo '你想呼叫我不存在的',$method,'靜態方法<br/>'; echo '還傳了一個引數<br/>'; echo print_r($arg),'<br/>'; } // __clone() 當物件被克隆時,被呼叫 public function __clone() { echo "我被複制了!"; } } } $p1= new People(); //直接為私有屬性賦值的操作,會自動呼叫__set()方法進行賦值 $p1->name="wlt"; $p1->sex="man"; //直接獲取私有屬性的值,會自動呼叫__get()方法,返回成員屬性的值 echo "name ".$p1->name."<br>"; echo "sex : ".$p1->sex."<br>"; // 下面會呼叫 __isset var_dump(isset($p1->name)); // 下面會呼叫__unset var_dump(unset($p1->name)); // 下面會呼叫__call $p1->test('1',2),; // 下面會呼叫__callStatic() $p1::test('1',2),; // 獲取類中的所有方法列表 get_class_methods var_dump(get_class_methods('People')) ;