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();

 

posted on 2020-12-15 19:59  hudoit  阅读(136)  评论(0)    收藏  举报

导航