为了账号安全,请及时绑定邮箱和手机立即绑定

在线等!php中继承Static与延迟绑定十分感谢

在线等!php中继承Static与延迟绑定十分感谢

达令说 2019-10-25 22:51:48
题目描述题目来源及自己的思路输出Parent:parent_only=fromchild,both_distinct=fromparentChild:parent_only=fromchild,both_distinct=fromchild,child_only=fromchildhttps://www.php.net/manual/zh...相关代码//请把代码文本粘贴到下方(请勿用图片代替代码)$a=newstaticparent;var_dump(get_class_vars("staticparent"));$a=newstaticchild;echo"";var_dump(get_class_vars("staticparent"));出现以下结果array(2){["parent_only"]=>string(10)"fromparent"["both_distinct"]=>string(10)"fromparent"}array(2){["parent_only"]=>string(9)"fromchild"["both_distinct"]=>string(10)"fromparent"}我想咨询下,为什么newstaticchild后父类的parent_only会被修改,而both_distinct却不会.另外输出的原因是什么,而且把注释里面self::打开,替换static,结果为何是一致Parent:parent_only=fromchild,both_distinct=fromparentChild:parent_only=fromchild,both_distinct=fromchild,child_only=fromchild
查看完整描述

2 回答

?
白衣染霜花

TA贡献1796条经验 获得超10个赞

因为被覆盖了啊staticchild没有$parent_only,所以staticchild::$parent_only调用的是staticparent的$parent_only而staticparent的$parent_only被设置了fromchild所以打印出了fromchild
另外静态绑定不是这么用的。
子类继承父类覆盖了a属性。当子类的一个实例对象调用父类一个获取或使用a属性方法时,一般情况下,使用的是父类的a属性。而静态绑定,则使用的是子类自身的a属性。概况起来就是谁的对象用谁的
                            
查看完整回答
反对 回复 2019-10-25
?
侃侃无极

TA贡献2051条经验 获得超10个赞

本来写了一些,但是感觉我自己都要被转晕了,可以参考这篇文章。
(PHP)Latestaticbindingandchildattributedeclaration-Blog-(BKcore)ThibautDespoulain
                            
查看完整回答
反对 回复 2019-10-25
  • 2 回答
  • 0 关注
  • 322 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信