__get()获取私有或受保护属性时调用的方法

class coach

{

private $chairfit = "徐晓冬";

public function __construct()

{

echo "欢迎来到~必图拳馆训练~";

}

public function __get($chairfit)

{

echo $chairfit;//只打印属性名

}

}

class xxd extends coach

{

public function __construct()

{

echo "像个男人一样去战斗!"."\n";

}

}

$cj = new xxd();

$cj ->chairfit;

?>

输出结果:

像个男人一样去战斗!               #构造方法调用结果

chairfit                                  #继承自父类的__get()方法

#这样可以访问父类私有属性的值

class coach

{

private $chairfit = "徐晓冬";

public function __construct()

{

echo "欢迎来到~必图拳馆训练~";

}

public function __get($chairfit)

{

if ($chairfit=='chairfit')

{

return $this->chairfit;

}

}

}

class xxd extends coach

{

public function __construct()

{

echo "像个男人一样去战斗!"."\n";

}

}

$cj = new cj();

print($cj ->chairfit);

?>

输出结果:

像个男人一样去战斗!         #构造方法调用结果

徐晓冬        #通过父类的__get()方法访问父类私有属性

__set()对私有或受保护属性设置值

class coach

{

protected $chairfit = "徐晓冬";

public function __construct()

{

echo "欢迎来到~必图拳馆训练~";

}

public function __get($chairfit)

{

if ($chairfit=='chairfit')

{

return $this->chairfit;

}

}

}

class cj extends coach

{

public function __construct()

{

echo "欢迎来到北武堂训练"."\n";

}

public function __set($name,$value)

#当然,这__set()方法也可以写到父类中去,这里仅仅是为了展示继承特性中子类可以实现对父类属性,方法的继承

{

echo "hello,我是".$value.",你的巴西柔术教练!";

}

}

$cj = new cj();

$cj ->chairfit='劲儿弟弟';

?>

输出结果:

欢迎来到北武堂训练

hello,我是劲儿弟弟,你的巴西柔术教练!

拓展:在__set()或者__get()中,如果涉及多个不能直接访问的属性(例如:受保护或私有属性)

class coach

{

protected $chairfit = "徐晓冬";

private $lover = "丁大锅";

public function __construct()

{

echo "欢迎来到~必图拳馆训练~";

}

public function __get($chairfit)

{

return $this->$chairfit;

#注意;这里$chair是形参,如果写作chairfit,那么无论在实例化对象中访问设置什么属性,只会访问或修改父类中的属性protected $chairfit

} }

class cj extends coach

{

public function __construct()

{

echo "欢迎来到北武堂训练"."\n";

}

public function __set($name,$value)

{

$this->$name = $value;

#注意;这里$name是形参,如果写作name,那么无论在实例化对象中访问设置什么属性,只会访问或修改父类中的属性protected $chairfit

}

public function whoilove($lover)

{

echo "我喜欢".$lover;

}

}

$cj = new cj();

print("掌门人是:".$cj->chairfit."\n");

print("我喜欢:".$cj->lover."\n");

?>

输出结果:

欢迎来到北武堂训练

掌门人是:徐晓冬

我喜欢:丁大锅

根据上面的代码,继续拓展

$cj->whoilove($cj->lover);

$cj->lover='陈培昌'; #调用了__set()方法实现对父类私有属性$lover的设置

$cj->whoilove($cj->lover)

输出结果:

我喜欢丁大锅

我喜欢陈培昌

php类知识点滴---类的实例化,构造函数,继承初步

实例化类----黑科技用法,通过字符串来实例化 class coach { public function __construct() { echo "欢迎光临北武堂".&quot ...

php类知识点滴---类继承的一些原则

完全重写 <?php class coach { public function __construct() { echo "欢迎来到~北武堂训练~"; } }     cl ...

jQuery绑定以及解除时间方法总结,以及事件触发的方法

一   off()和on()          $("obj").on(event,[sesect],[data],fn);一般情况下参数只有两个,事件以及事件的处理函数     ...

Python 基础之面向对象之类中的方法和与类相关的魔术属性以及反射

一.类中的方法 普通方法: 没有参数,只能类调用绑定方法: (1)绑定到对象(自动传递对象参数) (2)绑定到类(自动传递参数)静态方法: 无论是类还是对象,都能调用的方法#例:class Dog() ...

PHP 类中的魔术方法

定义: PHP类中以两个下画线“__”开头的方法被称为魔术方法. 分类: 例如:构造方法:__construct:析构方法:__destruct:动态重载:__set().__get().__call ...

python类:magic魔术方法

http://blog.csdn.net/pipisorry/article/details/50708812 魔术方法是面向对象Python语言中的一切.它们是你可以自定义并添加"魔法&q ...

Python面向对象5:类的常用魔术方法

魔术方法就是不需要人为调用的方法,基本是在特定的时刻自动触发- 魔术方法的统一的特征,方法名被前后各两个下滑线包裹 - 操作类 - `__init__`: 构造函数 - `__new__`: 对象实例 ...

&lpar;转&rpar;python类:magic魔术方法

原文:https://blog.csdn.net/pipisorry/article/details/50708812 版权声明:本文为博主皮皮http://blog.csdn.net/pipisor ...

随机推荐

mybatis跨XML引用

resultMap中association标签的select属性使用嵌套查询的时候需要引用其它xml文件的配置 此时可以用要引用xml的namespace.引用select的ID 如

前端性能优化(DOM篇)

原文链接:https://segmentfault.com/a/1190000000490322 缓存DOM对象 JavaScript的DOM操作可以说是JavaScript最重要的功能,我们经常要根 ...

innerText在谷歌、火狐浏览器下的使用

使用innerHTML.replace(/<.>/gim,'')代替innerText,简单正则替换一下

Spark Streaming揭秘 Day24 Transformation和action图解

Spark Streaming揭秘 Day24 Transformation和action图解 今天我们进入SparkStreaming的数据处理,谈一下两个重要的操作Transfromation和a ...

《Windows驱动开发技术详解》之自定义StartIO

自定义StartIO 系统定义的StartIO队列只能使用一个队列(DDK提供的StartIO内部只有一个队列),这个队列将所有的IRP进行处理化.例如,读.写操作都会混在一起进行串行处理.然而,有时 ...

Linux 下挂在ntfs 硬盘

CentOS 7 下想要挂载NTFS的文件系统该怎么办呢? 我们需要一个NTFS-3G工具,并编译它之后在mount就可以了,就这么简单. 首先要进入官网下载NTFS-3G工具 http://www. ...

提高SQL执行效率的16种方法

项目中优化sql语句执行效率的方法:1)尽量选择较小的列2)将where中用的比较频繁的字段建立索引3)select子句中避免使用'*'4)避免在索引列上使用计算.not in 和<> ...

border样式?

border样式? 设置边框样式: border:宽度 外形 颜色:(自动设置顺序:top,right,bottom,left) boeder-top:宽度 外形 颜色:(单独为某一个边边框设置样式) ...

蚂蚁爬杆问题 UVA 10881

算法入门经典训练指南上的题. 这里有必要讲一下蚂蚁爬杆问题:每只蚂蚁都有一个初始方向,相撞会转向,关键就是相撞的处理,由于速度并不会改变,两只蚂蚁相撞,可以看做,两只蚂蚁穿过对方,继续沿原方向前进,经 ...

Vue与React的异同

众所周知,前端现在最火的两个框架是Vue和React了.通过一段时间的学习与项目上的实践,我想通过比较他们之间的异同点来发现以后在项目的技术选型中知道怎么抉择用哪个.有一点说明的是他们各自有自己的优势 ...

php如何在特定情况下触发,php类知识点滴---魔术方法,系统在特定时机触发的方法...相关推荐

  1. 非多态的继承情况下,基类指针可以指向派生类对象么?

    class Base { // 基类 public:Base(int aa=88) : a(aa) {}void f() { // 非virtualcout<<"Base&quo ...

  2. 在特定情况下的简单SSO实现方案

    最近需要实现类似单点登录的功能.情况是这样的,最初在做网站A,做着做着,要做网站B了,要求与网站A完全分开作为两个应用,但用户数据要求与网站A保持一致,也要求用户在网站A登录后,转到网站B时不需要再登 ...

  3. Java的流读一行丢一行_java – 在少数特定情况下记录丢失的消息

    我正在使用 java.util.logging来完成我的应用程序的所有日志记录. 直到最近,我在没有任何特定配置的情况下使用日志工具.一切都按预期工作,所有日志都在控制台中可见(stderr) 现在, ...

  4. c# 实现二进制文件读写、ini文件读写以及一些文件和目录的常用操作,在某些特定情况下会用到,如录波文件要保存.dat

    不说废话,直接上代码 还包含一些常用的目录和文件操作的函数,如获得文件大小,获得文件行数,获得文件时间,获得目录下所有的文件名称等等等

  5. 【 FPGA 】特定情况下消除不稳定态的方法

    不是没有方法,但方法也不多,最典型的就是使用格雷码. 消除不稳定态的原理 通过上篇博文:https://blog.csdn.net/Reborn_Lee/article/details/8443977 ...

  6. 【OFDM仿真】基于秩亏情况下遗传算法和粒子群算法优化MIMO-OFDM系统多用户检测附matlab代码

    ✅作者简介:热爱科研的Matlab仿真开发者,修心和技术同步精进,matlab项目合作可私信.

  7. linux下载软件说依赖关系不足,在依赖关系可以满足的情况下也会提示“依赖关系不满足”...

    问题 在某些特定情况下,deepin-deb-installer不能正确解决依赖关系. 虽然软件包的依赖很简单(这里只有一个wine),而且可以顺利被apt命令安装,但是deepin-deb-inst ...

  8. python初学 数据分叉情况下的函数递归

    对于python中的函数递归,其实用while和for循环可以等价的实现.平时较少用到,但是在某些特定情况下比较方便实现一些功能. 对于没有数据分叉的函数递归,比较简单.如: def cal(n):p ...

  9. 数据查询必备技能SQL调优:Mysql什么情况下不走索引

    背景分析 今天领导在查询报表时,发现特别慢,于是引发一系列关于sql优化的工作,最终发现是分析同学在进行多表关联时进行不等值关联造成全表扫描,且使用字段无索引造成1W条数据表和20W数据表关联时执行缓 ...

最新文章

  1. Sencha ID的注册
  2. linux nat冲突,Linux系统下的NAT及防火墙的混合应用
  3. C# 繁体,简体互转
  4. 将以太坊封装为 ERC20
  5. 动画分析步骤“三步曲”
  6. AARRR:互联网创业者一定要掌握的指标
  7. Flex手机开发系列一:新建Flex手机项目并打包
  8. 滚动图片广告_女排赢球可喜看台马桶广告扎眼 网友:去男足赛场!别在这儿蹭热点...
  9. 前端基于Canvas生成等值面的方案
  10. 问题三十八:C++中bad alloc问题(1)——分析问题
  11. css3简记,了解一下?
  12. Java的核心技术有哪些
  13. matlab中断概率仿真,使用Matlab进行误比特率仿真
  14. spring security中A granted authority textual representation is required
  15. SparkRDD算子(三)键值对聚合操作(reduceByKey,foldByKey,sortByKey, join)
  16. Word处理控件Aspose.Words功能演示:使用 Python 合并 Word 文档
  17. 天池比赛TASK3打卡
  18. teamviewer连接不上的原因及解决方法有哪些
  19. 易基因|ctDNA甲基化测序分析(ctDNA-WGBS)用于癌症检测和分子分型 | 精准医学
  20. 解决物理机为ubuntu与virtualbox客户机为windows10间剪切板不能用的问题

热门文章

  1. 一款实用的屏幕绘制标注和鼠标高亮工具:Presentify Mac
  2. 商务印书馆汉译世界学术名著丛书目录
  3. comfort说明书 tp1200_西门子触摸屏TP1200COMFORT用什编程软件
  4. 80后的 我们 依然单身
  5. 多媒体技术论文研读报告
  6. 武汉星淘惠:武汉跨境产业稳步发展,线上选品大会已圆满落幕
  7. Java通过Freemarker生成docx文件
  8. 操作系统思维导图——操作系统概论
  9. 2022建筑电工(建筑特殊工种)复训题库及答案
  10. C语言程序计算星期几,怎样用c语言程序计算每月的一号是星期几