PHP中的魔术方法__set() 和 __get()
魔术方法:是以两个下划线“__”开头,具有特殊作用的一些方法。
__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();
浙公网安备 33010602011771号