PHP中static 跟self的使用区别

PHP中static 和self的使用区别。

首先来看一下self的情况:

 <?php
 class A {
    public static function who() {
        echo A::class . '<br/>';
    }
    public static function test() {
        self::who();
    }
}
class B extends A {
public static function who() {
echo B::class . '<br/>';
}
}
 
A::test();//A
 
B::test();//A
 
 
先来是看一下static的情况:


 <?php
 class A {
    public static function who() {
        echo A::class . '<br/>';
    }
    public static function test() {
        static::who();
    }
}
class B extends A {
public static function who() {
echo B::class . '<br/>';
}
}
 
A::test();//A
 
B::test();//B
 
 


static:如果在子类中重写了父类中的static方法、属性,父类就会去访问了子类的static方法


self: 是类内指针,不管子类有没有重写过父类中的方法、属性都指向本类的静态方法、属性


参考文献:


https://blog.csdn.net/aarontong00/article/details/53956461

猜你喜欢

转载自blog.csdn.net/weixin_41282397/article/details/80870760