面向对象PHP提供了设置属性__set()和获取属性__get()的方法,程序员可根据需要重载__set()与__get()方法。
注意:__set()和__get()具有两个下划线!
__get()方法主要用于获取对象的变量值,默认调用。
运行结果:
运行结果:
结果分析:由于name和age是private ,需要通过__set()赋值,通过__get()获得值,但新添加的sex默认是public,因此不用调用__get()。
注意:__set()和__get()具有两个下划线!
__get()方法主要用于获取对象的变量值,默认调用。
__get()方法的应用举例:
class employee {
private $name = "liulong";
private $age = "24";
function __get($title) {
echo "call get" . "<br>";
$arr = array ("name","age");
if (in_array($title, $arr))
return $this-> $title;
else
echo "not exist.". "<br>";
}
}
$m = new employee();
echo $m->name. "<br>";
echo $m->age. "<br>";
echo $m->color. "<br>";
运行结果:
call get
liulong
call get
24
call get
not exist.
__set()方法,默认调用:
(1)为变量赋值;
(2)可以扩展类,为类添加新的属性;
class employee {
private $name;
private $age ;
function __set($title,$value) {
echo "call set"."<br>";
$this->$title=$value;
}
function __get($title) {
echo "call get" . "<br>";
$arr = array ("name","age");
if (in_array($title, $arr))
return $this-> $title;
else
echo "not exist.". "<br>";
}
}
$m = new employee();
$m->name="liulong";
$m->age="24";
$m->sex="male"; //之前没有sex属性
echo $m->name."-".$m->age."-".$m->sex;
运行结果:
call set
call set
call set
call get
call get
liulong-24-male
结果分析:由于name和age是private ,需要通过__set()赋值,通过__get()获得值,但新添加的sex默认是public,因此不用调用__get()。