PHP:get_called_class()vs get_class($ this)

seb*_*taz 19 php oop

在PHP中get_called_class(),get_class($this)在实例中使用和之间的区别是什么?

例:

class A {
    function dump() {
        echo get_called_class();
        echo get_class($this);
    }
}

class B extends A {}

$A = new A();
$B = new B();

$A->dump(); // output is 'AA'
$B->dump(); // output is 'BB'
Run Code Online (Sandbox Code Playgroud)

这种情况有什么不同吗?

我什么时候应该使用其中一个get_called_class()get_class($this)

Ja͢*_*͢ck 22

在这种情况下,没有区别,因为$this始终指向使用其解析类名的正确实例get_class().

该函数get_called_class()适用于静态方法.当重写静态方法时,此函数将返回类名,该类名为正在调用的当前方法提供上下文.


小智 15

对于get_called_class()PHP> = 5.5的更快的替代方法,请使用static::class.它可以获得静态方法调用的顶级类,以及继承的方法.