在类的封装中,获取属性可以自定义getXXX()和setXXX()方法,当一个类中有多个属性时,使用这种方式就会很麻烦。为此PHP5中预定义了__get()和__set()方法,其中__get()方法用于获取私有成员属性值,__set()方法用于为私有成员属性值赋值,这两个方法获取或设置私有属性值时都是自动调用的。接下来通过一个案例来演示这两个方法的使用。

[php] view plaincopy print?
  1. <?php
  2. class Person
  3. {
  4. private $name;
  5. private $age;
  6. public function __get($property_name)
  7. {
  8. echo "自动调用__get()方法获取属性值<br>";
  9. if(isset($this->$property_name))
  10. {
  11. return ($this->$property_name);
  12. }
  13. else
  14. {
  15. return (NULL);
  16. }
  17. }
  18. public function __set($property_name,$value)
  19. {
  20. echo "自动调用__set()方法设置属性值<br>";
  21. $this->$property_name=$value;
  22. }
  23. }
  24. $p1 = new Person;
  25. $p1->name = "张三";
  26. $p1->age = 10;
  27. echo "姓名:".$p1->name."<br>";
  28. echo "年龄:".$p1->age."<br>";
  29. ?>

运行结果:

转载于:https://www.cnblogs.com/qianzf/p/7650244.html

PHP中的__get()和__set()方法获取设置私有属性相关推荐

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

    PHP类中的__get()和__set函数到底有什么用 一.总结 一句话总结:当试图获取一个不可达变量时,类会自动调用__get.同样的,当试图设置一个不可达变量时,类会自动调用__set.在网站中, ...

  2. 【Groovy】编译时元编程 ( ASTTransformation#visit 方法中访问 Groovy 类、方法、字段、属性 | 完整代码示例及进行编译时处理的编译过程 )

    文章目录 一.ASTTransformation#visit 方法中访问 Groovy 类.方法.字段.属性 二.完整代码示例及进行编译时处理的编译过程 1.Groovy 脚本 Groovy.groo ...

  3. php类3个属性是哪3种,PHP获取类私有属性的3种方法

    今天在推上看到一条获取php类私有属性的推文,感觉很有意思: 顺着推文联想,还有其他方式吗?经过自己的测试及网上答案,总结出三种方法: 1. 反射 反射可以获取类的详细信息,要获取私有属性的值,只需将 ...

  4. matplotlib之pyplot模块——获取/设置对象属性值(setp()、getp/get())

    当前有效matplotlib版本为:3.4.1. 概述 pyplot模块提供了获取/设置对象属性值的接口.功能类似于Python内置函数getattr和setattr.从源码上来看,get()是get ...

  5. 【MATLAB】基本绘图 ( 句柄值 | 对象句柄值获取 | 创建对象时获取句柄值 | 函数获取句柄值 | 获取 / 设置 对象属性 | 获取对象属性 )

    文章目录 一.对象句柄值获取 1.句柄值 2.创建对象时获取句柄值 3.函数获取句柄值 4.获取 / 设置 对象属性 二.获取对象属性 1.获取 线 对象属性 2.获取 坐标轴 对象属性 一.对象句柄 ...

  6. php获取p标签的值,js使用html()或text()方法获取设置p标签的显示的值

    html()方法 此方法类似于JavaScript中的innerHTML属性,可以用来读取或者设置某个元素中的HTML内容.要获取某个元素的内容,可以这样: var p_html = $(" ...

  7. Python OOP:继承、单继承、多继承、__mro__、子类重写父类同名属性和方法、子类调用父类同名属性和方法、多层继承、super()、私有(实例)属性和方法、获取修改私有属性值、私有类属性

    一.继承 Python⾯向对象的继承指的是多个类之间的所属关系,即⼦类默认继承⽗类的所有属性和⽅法. 继承作用:继承可以使用现有类的所有功能,并在无需重新编写原来的类的情况下对这些功能进行扩展. 在P ...

  8. html 获取p 属性值,js使用html()或text()方法获取设置p标签的显示的值

    html()方法可以用来读取或者设置某个元素中的HTML内容,text()方法可以用来读取或者没置某个元素中的文本内容 html()方法 此方法类似于JavaScript中的innerHTML属性,可 ...

  9. java根据属性获取对象_java反射工具类--通过指定属性名,获取/设置对象属性值

    java对象通过点运算符操作对象属性的方式没法使用for,while等循环,此工具主要解决这一问题. 例如:有一对象包含属性有一定规律 obj1: { name1: "张三", a ...

最新文章

  1. python能实现excel什么功能_Python pandas对excel的操作实现示例
  2. AIX系统日志学习笔记之三
  3. sweet+alert+ajax,Ajax相关
  4. python读取redis存储数据的存储时间_Python读写Redis数据库操作示例
  5. 2019-11-18 自动控制原理的几个基本概念
  6. 为什么MySQL将会是一个更好的NoSQL
  7. JDK8利用Stream为集合对象分组并编号
  8. 在c语言中输入三个数据类型,【C语言讲解】第二章:数据类型3
  9. 如何建立强有力的人脉关系
  10. Android实例(一)—— 3D画廊
  11. idea Push Tags选All还是Current Branch?
  12. WPS个人版如何启用VBA(宏)
  13. 好好说话之unlink
  14. java生成图片,特殊字符显示方框问题解决
  15. 实验三 使用CSS3
  16. 前端开发中的跨域问题及解决方案
  17. 2021-11-02发电机转子方程的推导
  18. 使用.NET REACTOR制作试用软件及颁发License
  19. 金蟾论金:黄金多头迎非农,最新黄金走势分析实时策略布局
  20. 什么是死锁及死锁的必要条件和解决方法

热门文章

  1. swoole之代码热更新实现
  2. 删除列表中满足一定条件的元素
  3. [react] 你有使用过loadable组件吗?它帮我们解决了什么问题?
  4. 前端学习(3350):数组方法的运用和数值join
  5. 前端学习(3345):数组方法的使用
  6. [html] 请问60*80的canvas占多少内存?你是怎么计算的?
  7. 工作404-判断浏览器函数
  8. [html] 使用svg画出一个矩形
  9. [vue] SPA单页面的实现方式有哪些?
  10. 前端学习(2576):选择何种方式的路由和底层原理