PHP中的魔術方法
阿新 • • 發佈:2020-12-15
魔術方法:是以兩個下劃線“__”開頭,具有特殊作用的一些方法。
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();