首页 > 其他 > 详细

【十五】魔术方法__set()、__get()

时间:2017-11-24 19:47:42      阅读:216      评论:0      收藏:0      [点我收藏+]

__set()方法:

语法:

function __set($property, $value) {

 

//$property接收的属性的名字

 

//$value接收的是属性的值

 

}

 

 1     class Employee{
 2         public $name;
 3         private $head;
 4         protected $body;
 5         function __set($propName,$propValue){
 6             echo $propName."<br/>";
 7             echo $propValue."<br/>";
 8         }
 9     }
10     $employee=new Employee();
11     $employee->name="mario";    //公共属性
12     $employee->title="executive chef";    //在Employee类中不存在的属性
13     $employee->head="my head";    //私有属性
14     $employee->body="my body";    //私有属性

技术分享图片

__get()方法:

语法:

 

funciton __set($property) {

 

//$property接收的是属性的名字

 

}

 

 1     class Employee{
 2         public $publicname;
 3         public $city;
 4         protected $protectedvalue=15;
 5         private $privatevalue;
 6         function __get($propName){
 7             echo "__get called<br/>";
 8             $vars=array("publicname","city","protectedvalue");
 9             if (in_array($propName, $vars)) {
10                 return $this->$propName."<br/>";
11             }else{
12                 return "no such variable<br/>";
13             }
14         }
15     }
16     $employee=new Employee();
17     $employee->publicname="huahua";
18     echo $employee->publicname."<br/>";    //公共属性
19     echo $employee->nothingvalue;    //在Employee类中不存在的属性
20     echo $employee->protectedvalue;    //私有属性
21     echo $employee->privatevalue;    //私有属性

 技术分享图片

总结:从上图可以看出。

1.如果没有__set()和__get()方法,访问一个类中不存在的属性或没有访问权限的属性时,会报严重错误

2.当实例化一个对象后,调用类中不存在或者没有权限访问(protected、private)的属性的时候,php会默认调用__get()、__set()方法

3.属性为public,不会调用__get()和__set()方法

【十五】魔术方法__set()、__get()

原文:http://www.cnblogs.com/8013-cmf/p/7891981.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!