1. 程式人生 > 實用技巧 >PHP中的魔術方法

PHP中的魔術方法

魔術方法:是以兩個下劃線“__”開頭,具有特殊作用的一些方法。

1.__set() 和 __get()方法

在一個類中我們定義了私有屬性,在類外或者子類中我們無法獲取,或者給私有變數設定值的;

 1 Class A
 2 {
 3     private $name='aa';
 4     private $age =12;15 } // 在外部或者子類中是獲取不到$name,$age;

我們可以通過__set()賦值,__get()獲取,這樣就可以在類外或者子類中獲取或設定值

這兩個方法是類共有的,只需要在類中使用即可

 1 <?php
 2 Class A
 3 {
 4     private
$name='aa'; 5 private $age =12; 6 public $sex = ''; 7 public function __set($name,$value){ 8      //echo '給類中的私有變數賦值'; 9 $this->$name =$value; 10 } 11 12 public function __get($name) 13 { 14      //echo '獲取類中的私有變數'; 15 return $this->$name; 16 } 17
} 18 19 //$a = new A(); 20 // echo $a->name; 類外獲取$name; 21 // $a->name = 'vv'; 類外設定變數$name; 22 23 class B extends A 24 { 25 public function show(){ 26 echo $this->sex; // 這個是public變數,因此可以直接呼叫 27 echo $this->name; // 父類中沒有__get()方法,就會報錯 28 $this->name = 'v'; //
在子類中設定變數 父類中沒有__set()方法,就會報錯 29 echo $this->name; 30 } 31 } 32 $b = new B(); 33 $b->show();