码迷,mamicode.com
首页 > 其他好文 > 详细

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

时间:2017-11-24 20:11:58      阅读:148      评论:0      收藏:0      [点我收藏+]

标签:png   com   .com   总结   分享图片   分享   实例化   title   head   

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

标签:png   com   .com   总结   分享图片   分享   实例化   title   head   

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

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!