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

怎么理解PHP里的self呢?

怎么理解PHP里的self呢?

一只甜甜圈 2018-07-05 18:18:06
    class A {        const STR = "A";        public function x() {            echo self::STR;        }    }    class B extends A{        const STR = "B";    }    (new B)->x();最后输出结果是A,该怎么理解这个呢?猜想一:self在编译时会绑定为当前类,可理解成编译时所有的self替换为所处类名,这样别的类继承父类方法后,方法代码里并不是self::xxx,而是父类名::xxx所以例子里的str就是父类里的str猜想二:子类继承父类方法,其实并不是把父类方法拿过来,而是有了父类方法的访问权限,当调用子类里没有的方法时,会去父类里找,找到后在父类里执行,自然就self指向父类这两种到底哪种对呢?如果都不对的话应该怎么理解self呢?先谢谢大家指点了
查看完整描述

2 回答

?
呼如林

TA贡献1798条经验 获得超3个赞

<?php

class A {

    const STR = "A";


    public function x() {

        echo self::STR;

    }

}


class B extends A{

    const STR = "B";  

    public function x() {

        echo self::STR;

    }  

}


(new B)->x();

复写一下就好理解

查看完整回答
反对 回复 2018-07-10
?
子衿沉夜

TA贡献1828条经验 获得超3个赞

实际上他们的原理是:
self 是针对当前本类的使用
this 是对当前类的调用,如果当前类没有,则找寻到父类去

查看完整回答
反对 回复 2018-07-10
  • 2 回答
  • 0 关注
  • 535 浏览

添加回答

举报

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