首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >PHP: get_called_class() vs get_class($this)

PHP: get_called_class() vs get_class($this)
EN

Stack Overflow用户
提问于 2013-05-13 13:43:03
回答 4查看 22.2K关注 0票数 22

在PHP中,当在实例中使用时,get_called_class()get_class($this)有什么不同?

示例:

代码语言:javascript
复制
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)

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2013-05-13 14:23:19

在本例中没有区别,因为$this总是指向使用get_class()解析类名的正确实例。

函数get_called_class()用于静态方法。当静态方法被覆盖时,此函数将返回为当前被调用的方法提供上下文的类名。

票数 25
EN

Stack Overflow用户

发布于 2015-11-06 22:55:33

要获得PHPPHP5.5中get_called_class()的更快的替代品,请使用static::class。它的作用是为静态方法调用和继承方法获取顶级类。

票数 21
EN

Stack Overflow用户

发布于 2013-05-13 13:47:02

不是在这种情况下。如果dump是一个静态方法并去掉了$this参数,那么在两种情况下get_class都将返回"A“,而当您执行B::dump();时,get_called_class将返回”B

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/16515516

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档