__get()用来获取私有属性值,__set()设置私有属性值
注释:以下代码如果不加上 __get()和__set()方法,程序就会出错,因为不能在类的外部操作私有成员,加上__get()和__set()方法来帮助我们直接存取封装的私有成员的。
代码示例:
<?php
class
Person
{
//私有属性
private $
name
;
//
人的名子
private $
sex
;
//
人的性别
private $
age
;
//
人的年龄
//__get()
方法用来获取私有属性
private function
__get($name)
{
echo
"获取私有属性值时候,自动调用了这个__get()方法<br>";
if
(
isset
(
$
this
->
$
property_name
))
{
return
(
$
this
->
$
property_name
);
}
else
{
return
(
NULL
);
}
}
//__set()
方法用来设置私有属性
private function
__set($name, $value)
{
echo
"设置私有属性值时会自动调用__set()方法为私有属性赋值<br>";
$
this
->
$
property_name
= $value;
}
}
$
p1
=
new
Person();
//
为私有属性赋值的会自动调用
__set()
方法
$
p1
->name=
"乐杨俊"
;
$
p1
->sex=
"
男
"
;
$
p1
->age=
26
;
//
获取私有属性值会自动调用
__get()
方法
echo
"姓名:".$p1->name."<br>";
echo
"性别:".$p1->sex."<br>";
echo
"年龄:".$p1->age."<br>";
?>
输出结果:
设置私有属性值时会自动调用__set()方法为私有属性赋值
设置私有属性值时会自动调用__set()方法为私有属性赋值
设置私有属性值时会自动调用__set()方法为私有属性赋值
获取私有属性值时候,自动调用了这个__get()方法
姓名:乐杨俊
获取私有属性值时候,自动调用了这个__get()方法
性别:男
获取私有属性值时候,自动调用了这个__get()方法
年龄:26