PHP中class里面__get和__set方法用处

当试图获取一个不可达变量时,类会自动调用__get。同样的,当试图设置一个不可达变量时,类会自动调用__set。在网站中,这两个并不是什么非用不可的函数。所以可以用于输出提示消息,或者返回值。

例如:
Class Test
{
private $a = 1;
private $b = 2;
public $c = 3;

public function  __get($vname)
{
    return "you can not get";
}

public function __set($vname,$value)
{
    echo  "you can not set";
}

}

$t = new Test;

echo $t->a;//这里试图要打印出私有变量
$t->b=3;//这里试图要把私有变量进行设置

想要直接对私有变量操作,当然是做不到的。
于是在读取的时候,调用__get(),输出“you can not get”;
在设置的时候,调用__set(),输出“you can not set”。

顺便提一下,__get()和__set()函数要设置为public,要不然会Warning。
__get()和__set()函数定义时的参数分别为1个和2个,不管函数中到底有没用,都是不可省略的。

通过修改__get()和__set()函数内部的语句,就可以实现在外部调用类的私有变量。
例如:
private __get($vname)
{
return t h i s > this-> vname;
}
如果$vname的值是a,那么就返回了正确的值。
__set()也同理。

public function __set( v n a m e , vname, value)
{
t h i s > this-> vname = $value;
}

发布了124 篇原创文章 · 获赞 10 · 访问量 1万+

猜你喜欢

转载自blog.csdn.net/weixin_42433970/article/details/102935326
今日推荐