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

__set() is run when writing data to inaccessible properties.
__get() is utilized for reading data from inaccessible properties.
究竟用中文怎么翻译呢? inaccessible :n. 难达到;难接近;无法理解。
有代码有真相:

<?phperror_reporting(E_ALL);class stu{private $a;private $b = 0;public $c;public $d = 0;//这里的 private 可以用 protected public 替代private function __get($name) {return 123;}//这里的 private 也可以用 protected public 替代private function __set($name, $value) {echo "This is set function";}}$s = new stu();var_dump($s->a); //output: 123var_dump($s->b); //output: 123var_dump($s->c); //output: nullvar_dump($s->d); //output: 0var_dump($s->e); //output: 123$s->a = 3; //output: This is set function$s->c = 3; //no output$s->f = 3; //output: This is set function
?>

结果:

如果没有__get方法,执行 var_dump($s->a) var_dump($s->b) 会有致命的错误
如果没有__get方法,执行 var_dump($s->e) 会有一个notice,提示没有定义属性 $e
总结:
1. 从一个难以访问的属性读取数据的时候 __get() 方法被调用
2. 向一个难以访问的属性赋值的时候 __set() 方法被调用
3. 难以访问包括:(1)私有属性,(2)没有初始化的属性
4. __isset() __unset() 也类似 

转载于:https://www.cnblogs.com/moqiang02/p/4061560.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/493682.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

OpenCV中的傅里叶的门道

接触到傅里叶-梅林算法&#xff0c;需要用到傅里叶变换&#xff0c;于是去查了一下OpenCV中的实现方法&#xff0c;没想到习以为常的傅里叶变换之中的门道还不少。 //傅里叶变换https://blog.csdn.net/keith_bb/article/details/53389819Mat I imread("Lena.jpg", I…

Science:人类迎来目前最为全面的癌症染色质可及性图谱

来源&#xff1a;吴晓波频道摘要&#xff1a;肿瘤在世界范围内导致人类死亡的首要原因之一&#xff0c;尤其是随着医疗水平的发展&#xff0c;人类的寿命的不断延长&#xff0c;癌症逐渐成为威胁人类健康的首要因素。肿瘤在世界范围内导致人类死亡的首要原因之一&#xff0c;尤…

傅里叶变换频谱的可视化保存

在上一篇关于傅里叶变换的博客中&#xff0c;知道了imshow的一个小trick&#xff1a;对normalize得到的0~1之间的浮点数构成的矩阵会进行放大255的操作&#xff0c;得到可视化的灰度图。即便是在python中也是如此操作的&#xff0c;只不过python中的函数封装得更加严密&#xf…

【MySQL学习笔记006】MySQL中的常见函数

1、字符串函数 常见的字符串函数 函数功能concat(S1, S2, ..., Sn)字符串拼接Lower(str)将字符串str全部转为小写Upper(str)将字符串str全部转为大写Lpad(str, n, pad)左填充&#xff0c;用字符串pad对str的左边进行填充&#xff0c;达到n个字符串长度Rpad(str, n, pad)右填充…

她取代马斯克成特斯拉新董事长 究竟什么来头?

来源&#xff1a;智车科技摘要&#xff1a;就如乔布斯之于苹果&#xff0c;对很多人来说&#xff0c;马斯克对特斯拉而言也有非凡的意义。甚至可以说&#xff0c;特斯拉的品牌吸引力很大程度上来自于“钢铁侠”本人。但由于当初任性发布“私有化”消息&#xff0c;被美国证交会…

十二天深入理解计算机系统(一)

计算机系统漫游 1 信息就是位上下文 系统中所有的信息都是由一串位表示的&#xff0c;在不同的上下文中&#xff0c;一个同样的字节序列可能表示一个整数、浮点数、字符串或者机器指令。 2 文本文件和二进制文件 有ASCII字符构成的文件称为文本文件&#xff0c;所有其他文件都是…

李航《统计学习方法》-----朴素贝叶斯

朴素贝叶斯法nave Bayes&#xff0c;在nave的中间字母上其实有两个点&#xff0c;查了一下才发现是法语中的分音符&#xff0c;在发音过程中发挥作用。但这不是重要的&#xff0c;重要的是在这种学习方法中贝叶斯承担了什么样的角色。 首先简单证明一下贝叶斯公式。联合概率Joi…

IEEE专访李开复:人类已打开潘多拉盒子,封堵AI变革只会徒劳

来源&#xff1a;《IEEE Spectrum》摘要&#xff1a;近期&#xff0c;李开复新书《AI未来》在美国同样反响不俗。在荣登多个排行榜后&#xff0c;IEEE旗下《IEEE Spectrum》&#xff0c;对李开复进行了专访&#xff0c;谈到了众多当前AI领域最受关注的话题。而且从《IEEE Spect…

nyoj_111_分数加减法_201311281341

分数加减法 时间限制&#xff1a;3000 ms | 内存限制&#xff1a;65535 KB难度&#xff1a;2描述编写一个C程序&#xff0c;实现两个分数的加减法输入输入包含多行数据 每行数据是一个字符串&#xff0c;格式是"a/boc/d"。 其中a, b, c, d是一个0-9的整数…

Rand函数使用和对补码的理解

下面是在牛客网看到的一道题; //假设这n个数的序号依次为0,1,2,...,n-1,数组名为num void knuth1(int* pNum, int m, int n){srand((unsigned int)time(0));for (int i0; i<n; i){if (rand()%(n-i) < m)//rand()%(n-i)的取值范围是[0, n-i&#xff09;{cout << p…

深度学习巨头Yoshua Bengio清华演讲: 深度学习通往人类水平人工智能的挑战

来源&#xff1a;专知摘要&#xff1a;2018年11月7日晚&#xff0c;被称为“深度学习三巨头”之一的蒙特利尔大学计算机科学与运算研究系教授Yoshua Bengio在清华大学做了《深度学习抵达人类水平人工智能所面临的挑战&#xff08;Challenges for Deep Learning towards Human-L…

HDU 4431 Mahjong(模拟题)

题目链接 写了俩小时把....有一种情况写的时候漏了...代码还算清晰把&#xff0c;想了很久才开写的。 1 #include <cstdio>2 #include <cstring>3 #include <algorithm>4 using namespace std;5 int p[21],flag[60],o[21],ans[60];6 int sp[21];7 int que[21…

了解GAN网络

GAN网络&#xff0c;第一次听说它就不明觉厉。其他网络都是对输入图像进行某种处理&#xff0c;得到某种特定的输出。而GAN网络居然可以“无中生有”&#xff0c;无论是去除马赛克&#xff0c;还是换脸&#xff0c;还是对灰度图像上色&#xff0c;都显得不可思议&#xff0c;怎…

新能源汽车:大变革催生十万亿市场空间

来源&#xff1a;新时代证券&#xff08;开文明&#xff09;新能源汽车发展空间巨大&#xff0c;随着新能源汽车性能提升以及痛点的改善&#xff0c;新能源汽车带来的冲击越来越大&#xff0c;渗透率随之提升。根据BNEF预测&#xff0c;到2025年全球新能源汽车的销量将达到1100…

dlib+vs2013+opencv实现人脸特征点检测

刷知乎的时候发现dlib做特征点检测和人脸识别的效果都好于OpenCV&#xff0c;就想着动手玩一下。没想到也是遇坑重重。 首先&#xff0c;在官网 install命令和setup.py文件进行安装时报错&#xff0c;先是报错cmake没有找到&#xff0c;添加了环境变量之后仍然报错c11需要在vs…

对号入座,看看未来几年机器人是否会取代你的工作

来源&#xff1a;资本实验室摘要&#xff1a;面对未来&#xff0c;你是否准备好了&#xff1f;“机器是否会取代人类的工作”是当前讨论最多的话题之一。这主要源自于近几年以人工智能为代表的新技术的快速发展与商业化。尽管各研究机构的预测数据有所不同&#xff0c;但相同的…

Ubuntu13下调试USB AUDIO的一些记录

最近想玩玩LINUX,于是双系统装了一个Ubuntu13.04。 在新系统下用着都还好&#xff0c;不过我自己DIY的USB DAC出了问题。在WIN7下能正常工作&#xff0c;但是在Ubuntu下就爆音不断&#xff0c;很明显是音频数据流断流引起的。 这说明stm32上的固件与Ubuntu的USB AUDIO驱动程序不…

冈萨雷斯《数字图像处理》读书笔记(十一)——表示和描述

虽然不是专门研究图像分割的&#xff08;峰兄才是&#xff09;&#xff0c;但多少接触了一点&#xff0c;并且图像分割是图像处理中的最为复杂的&#xff0c;通过图像分割可以很好地认识图像处理的好多方法。今天看的是边界追踪和链码的表示。网易计算机视觉工程师的第一道选择…

细胞内钾多钠少——原初生物的第三大遗迹?

来源&#xff1a;科学网在我们每日的饮食中&#xff0c;食盐&#xff08;氯化钠&#xff09;是少不了的&#xff0c;难以想象我们怎么能够每天吃完全没有盐味的食物。不仅人类如此&#xff0c;许多动物&#xff0c;例如食草的动物如牛和羊&#xff0c;也会主动寻找土表盐粒。我…

MSBuild的简单介绍与使用

MSBuild 是 Microsoft 和 Visual Studio的生成系统。它不仅仅是一个构造工具&#xff0c;应该称之为拥有相当强大扩展能力的自动化平台。MSBuild平台的主要涉及到三部分&#xff1a;执行引擎、构造工程、任务。其中最核心的就是执行引擎&#xff0c;它包括定义构造工程的规范&a…