PHP中SELF的问题
天蓬老师
天蓬老师 2017-04-10 17:36:55
0
3
360

这里的答案为什么是show:color,而不是show:red,难道是因为self写在Fruit类中就只能指向本类哪怕继承也不改变吗?

天蓬老师
天蓬老师

欢迎选择我的课程,让我们一起见证您的进步~~

모든 응답(3)
Peter_Zhu
  • self 指向基类 Fruit,也就是 __CLASS__ 的类

  • static、$this 指向最终new的类 Apple

以下这个类 你就明白了:

class Base {
    public function log() {

        // 目标类,输出:A/C
        echo static::class;
        
        
        // 基类,输出:Base
        //echo __CLASS__; 
        echo self::class;
        
    }
}

class A extends Base {
    public function log1() {
        echo self::class;
    }
}
class C extends A {
    public function log2() {
        echo self::class;
    }
}

$a = new A();$c = new C();
$a->log(); //输出 A Base
$c->log(); //输出 C Base
$c->log1(); //输出 A
$c->log2(); //输出 C
黄舟

因为Apple类中没有showColor这个方法,运行时,就去其父类里面找,找到了这个showColor,于是就调用了,由于用的self::color也就是说调用的是本类(也就是父类Fruit)中的color

大家讲道理

覆盖方法没有调用,肯定是原始值

최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿
회사 소개 부인 성명 Sitemap
PHP 중국어 웹사이트:공공복지 온라인 PHP 교육,PHP 학습자의 빠른 성장을 도와주세요!