在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)
发布于 2013-05-13 14:23:19
在本例中没有区别,因为$this
总是指向使用get_class()
解析类名的正确实例。
函数get_called_class()
用于静态方法。当静态方法被覆盖时,此函数将返回为当前被调用的方法提供上下文的类名。
发布于 2015-11-06 22:55:33
要获得PHPPHP5.5中get_called_class()
的更快的替代品,请使用static::class
。它的作用是为静态方法调用和继承方法获取顶级类。
发布于 2013-05-13 13:47:02
不是在这种情况下。如果dump是一个静态方法并去掉了$this
参数,那么在两种情况下get_class都将返回"A“,而当您执行B::dump();
时,get_called_class将返回”B
https://stackoverflow.com/questions/16515516
复制相似问题