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
首先来看一下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