欢迎访问 生活随笔!

生活随笔

当前位置: 首页 > 编程语言 > php >内容正文

php

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

发布时间:2025/7/14 php 52 豆豆
生活随笔 收集整理的这篇文章主要介绍了 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 =new ModelTime();

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 extends Common 2 { 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 function test1(){ 2 $modelTime =new ModelTime(); 3 echo $modelTime->perDayTS;die; 4 }

 

 

转载于:https://www.cnblogs.com/Renyi-Fan/p/9487387.html

《新程序员》:云原生和全面数字化实践50位技术专家共同创作,文字、视频、音频交互阅读

总结

以上是生活随笔为你收集整理的PHP类中的__get()和__set函数到底有什么用的全部内容,希望文章能够帮你解决所遇到的问题。

如果觉得生活随笔网站内容还不错,欢迎将生活随笔推荐给好友。