题目描述题目来源及自己的思路输出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 回答
MMTTMM
TA贡献1869条经验 获得超4个赞
因为被覆盖了啊staticchild没有$parent_only,所以staticchild::$parent_only调用的是staticparent的$parent_only而staticparent的$parent_only被设置了fromchild所以打印出了fromchild另外静态绑定不是这么用的。子类继承父类覆盖了a属性。当子类的一个实例对象调用父类一个获取或使用a属性方法时,一般情况下,使用的是父类的a属性。而静态绑定,则使用的是子类自身的a属性。概况起来就是谁的对象用谁的
慕田峪7331174
TA贡献1828条经验 获得超13个赞
本来写了一些,但是感觉我自己都要被转晕了,可以参考这篇文章。(PHP)Latestaticbindingandchildattributedeclaration-Blog-(BKcore)ThibautDespoulain
添加回答
举报
0/150
提交
取消