PHP: get_called_class() vs get_class($this)

2022-08-30 19:02:59

在 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'

在这种情况下有什么区别吗?

我什么时候应该使用一个或另一个或?get_called_class()get_class($this)


答案 1

在本例中,没有区别,因为始终指向使用 从中解析类名的正确实例。$thisget_class()

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


答案 2

要在 PHP 中更快地替代 php >= 5.5,请使用 。它的工作原理是获取静态方法调用以及继承方法的顶级类。get_called_class()static::class


推荐