标签: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()方法
标签:png com .com 总结 分享图片 分享 实例化 title head
原文地址:http://www.cnblogs.com/8013-cmf/p/7891981.html