__get __set

Posted 雨落知音

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了__get __set相关的知识,希望对你有一定的参考价值。

<?php 
class Person 
{ 
  //下面是人的成员属性,都是封装的私有成员 
  private $name; //人的名子 
  private $sex; //人的性别 
  private $age; //人的年龄 
  //__get()方法用来获取私有属性 
  private function __get($property_name) 
  { 
    echo "在直接获取私有属性值的时候,自动调用了这个__get()方法<br>"; 
    if(isset($this->$property_name)) 
    { 
      return($this->$property_name); 
    }else{ 
      return(NULL); 
    } 
  } 
  //__set()方法用来设置私有属性 
  private function __set($property_name, $value) 
  { 
    echo "在直接设置私有属性值的时候,自动调用了这个__set()方法为私有属性赋值<br>"; 
    $this->$property_name = $value; 
  } 
} 
$p1=newPerson(); 
//直接为私有属性赋值的操作,会自动调用__set()方法进行赋值 
$p1->name="张三"; 
$p1->sex="男"; 
$p1->age=20; 
//直接获取私有属性的值,会自动调用__get()方法,返回成员属性的值 
echo "姓名:".$p1->name."<br>"; 
echo "性别:".$p1->sex."<br>"; 
echo "年龄:".$p1->age."<br>"; 
?> 

 

以上是关于__get __set的主要内容,如果未能解决你的问题,请参考以下文章

PHP魔术法__set和__get

__get__,__set__,__delete__

PHP类中的__set()和__get()方法用在啥地方?可以用例子说明一下么...

描述符(\_\_get\_\_和\_\_set\_\_和\_\_delete\_\_)

php 中__set()和__get()的具体用法

PHP中__get()和__set()的用法实例详解