php类变量的getset,PHP类中的__get()和__set函数到底有什么用

PHP类中的__get()和__set函数到底有什么用

一、总结

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

1、php中使用什么代替java面相对象中的常用的get和set方法?

类默认自带的__get()和__set()

2、php中类中默认自带的__get()方法什么时候被调用?

当试图获取一个不可达变量时,类会自动调用__get

所以在php中相当于可以直接用对象访问私有属性(因为会自动调用__get()方法)

3、php中如何调用类的私有属性?

a、new对象($modelTime =newModelTime();)

b、用new出来的对象直接调用属性(echo $modelTime->perDayTS;die;)

c、在类中要写__get()方法返回值

10 public function __get($my_var){ 11 return $this->$my_var; 12 }

二、PHP类中的__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 $this->$vname;

}

如果$vname的值是a,那么就返回了正确的值。

__set()也同理。

public function__set($vname,$value)

{

$this->$vname=$value;

}

参考:

PHP类中的__get()和__set函数到底有什么用? - East2_100 - 博客园

https://www.cnblogs.com/east2-100/p/5272699.html

三、php中使用类默认自带的__get()和__set()代替java中的常用的get和set方法

关键代码

1 class Time extendsCommon2 {3 private $perDayTS;4 public function__construct() {5 parent::__construct();6 $this->perDayTS=24*60*60;7 echo "正在调用构造函数".$this->perDayTS;8 }9

10 public function __get($my_var){11 return $this->$my_var;12 }

调用

1 public functiontest1(){2 $modelTime =newModelTime();3 echo $modelTime->perDayTS;die;4 }

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值