当我们试图获取一个不可达属性时(比如private),类会自动调用__get函数。
当试图设置一个不可达属性时(比如private),类会自动调用__set函数,我们一起来看个例子:

<?php
class Person{public $name = '周伯通';private $sex = '男';function __get($name){echo '个人信息:'.$name.$this->sex;}
}
$class = new Person();
echo $class->sex;//个人信息:sex男

<?php
class Person{public $name = '周伯通';private $sex = '男';function __set($name, $val){echo '个人信息:'.$name. $val;}
}
$class = new Person();
$class->sex = '女';
echo $class->sex;
个人信息:sex女
( ! ) Fatal error: Uncaught Error: Cannot access private property Person::$sex in G:\web\gitlearn\set.php on line 11
( ! ) Error: Cannot access private property Person::$sex in G:\web\gitlearn\set.php on line 11

<?php
class Person{public $name = '周伯通';private $sex = '男';function __set($name, $val){//echo '个人信息:'.$this->$name = $val;$this->$name = $val; //注意 这里是$name,是要设置访问的变量名,如果大家用$this->name,会看到本例会输出的是 男
    }function getSex(){echo $this->sex; //获取新的属性
    }
}
$class = new Person();
$class->sex = '女';
echo $class->getSex();// 输出 女

转载于:https://www.cnblogs.com/hanmengya/p/10944851.html

__set __get相关推荐

  1. [资料]PHP中的__set __get使用

    PHP中的__set & __get使用 官方说明 public void __set ( string $name , mixed $value ) public mixed __get ( ...

  2. php魔术方法__SET __GET

    __SET  设置一个不可访问的属性的时候 调用_set方法 __GET 获取一个不可访问的属性的时候  调用_get 方法 <?phpclass stu{private $a;private ...

  3. PHP 魔术方法__set() __get() 方法详解

    __set() is run when writing data to inaccessible properties. __get() is utilized for reading data fr ...

  4. 提高php编程效率的小结

    1.如果将类的方法定义为:static,它的执行效率将提升为近4倍 2.php中数组的元素调用,使用关联数组优于索引数组 3.使用each快于print. 4.尽量使用foreach()替代for() ...

  5. PHP面向对象编程(imooc)代码合集(四)

    class10 多态 多态简单说就是用不同的类去实现同一个接口的方法,以实现不同类自己的方法 <?php date_default_timezone_set("PRC"); ...

  6. LAMP 关键数据集锦技术选项参考

    LAMP 关键数据集锦技术选项参考 源自日积月累自己的其他人的经验总结 负载均衡 LVS 工作在四层,内核态,性能极高,有VIP功能,配合 keepalived 做有效的 心跳检查和负载均衡安装配置 ...

  7. mysql是面向对象的语言吗_php一种面向对象的语言,那么什么是面向对象呢?

    php一种面向对象的语言,那么什么是面向对象呢? 传统的面向过程的编程思想: 相信很多人第一次接触编程都是c语言,c语言就是非常典型的面向过程的编程语言,将要实现的功能描述为一个从开始到结束的连续的& ...

  8. PHP几种常见魔术方法与魔术变量解析

    PHP几种常见魔术方法与魔术变量解析 先不多说,直接上代码,如下: 1 class Demo 2 { 3 private $str = 'str'; 4 5 //实例化时自动加载function 6 ...

  9. 魔术方法php,PHP中常用的魔术方法

    我们在PHP中经常用到魔术方法,像构造方法,析构方法等等魔术变量,下面总结一下一些常用的魔术变量: __construct(),__destruct(),__clone(),__autoload(), ...

最新文章

  1. chartcontrol饼状图属性设置_温故而知新,ggplot2 饼图的几点笔记
  2. 【转载】2009年春晚节目单提前揭晓
  3. js事件监听器用法实例详解
  4. 计算机控制系统开卷试卷,13自动化计算机控制技术考试A卷
  5. boost Filesystem Library Version 3关于文件的一些函数封装 fsync()函数
  6. python(33)多进程和多线程的区别
  7. 详解:JVM内存调优参数
  8. android五子棋设计模板,基于android的五子棋游戏设计
  9. 计算机中记录的意思,电脑日志看不懂,怎么才能知道日志记录的是什么意思啊?...
  10. jQuery Mobile中可折叠块collapsed的data-*选项
  11. warning: control reaches end of non-void function:错误解决
  12. B - Vicious Keyboard
  13. 基本技能 100316
  14. 地图坐标转换(84坐标、百度坐标、国测局坐标)
  15. matlab2017b和2018a,Matlab 2018a 比2017b有哪些改进?
  16. AI人工智能毕业设计课题:动物识别系统
  17. 英文、数字和汉字、日文的字符判断 英文占1个字符,中文汉字占2个字符 el-form表单验证规则
  18. Week of 2.7
  19. CMMI入门 - 通用实践的实施GP 2.8-GP 2.10
  20. 学术论文插图要求简介

热门文章

  1. 博客园首页新随笔联系管理订阅订阅随笔- 610 文章- 0 评论- 83 阅读- 144万 Calendar时间获取天,周,月,季度,年度时间段
  2. linux -bash: ./startup.sh: /bin/sh^M: 坏的解释器: 没有那个文件或目录
  3. git解决 “fatal: Could not read from remote repository.“
  4. Kotlin入门(32)网络接口访问
  5. android 构建者设计模式,Android中的设计模式之构建者模式
  6. display: flex的兼容性写法
  7. Django通过pycharm创建后,如何登录admin后台?
  8. 重磅开源:TN文本分析语言
  9. Alipay Direct Bankpay 支付宝网银支付 (For OpenCart 2.x)
  10. EasyUI之Form load函数IE8下设置Radio或Checkbox的BUG