面向对象php----__set()与__get()方法

面向对象PHP提供了设置属性__set()和获取属性__get()的方法,程序员可根据需要重载__set()与__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)可以扩展类,为类添加新的属性;


__set()方法的应用举例:


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





评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值