MyClass :: class - 获取MyClass的字符串表示形式

时间:2016-02-13 09:35:44

标签: php

双冒号(::)是Scope Resolution Operator

这用于访问受保护的方法和属性(和常量)。

但是,我已经看到使用:: class来返回类的字符串表示形式。像这样:

namespace App;
class MyClass
{

}

var_dump(MyClass::class); # string(11) "App\MyClass"

我已经广泛搜索了有关此行为的文档。

以上代码是否也使用了Scope Resolution Operator或者这是完全不同的东西?如果是这样,它的名字是什么?

如果它正在使用SRO,那是否意味着PHP在幕后放置了一个静态属性“class”? (虽然我无法覆盖这个静态属性)

2 个答案:

答案 0 :(得分:3)

这是PHP5.5中的一项新功能,请参阅:http://php.net/manual/en/language.oop5.basic.php#language.oop5.basic.class.class

这基本上是为了获得完整的班级名称。它也不是静态变量(请参阅前面的$),而是使用class关键字的语言功能。根据php.net上的说明:

  

使用:: class的类名解析是编译时转换。这意味着在创建类名字符串时,尚未发生自动加载。因此,即使该类不存在,类名也会扩展。在这种情况下不会发出错误。

答案 1 :(得分:0)

operator :: class引入了PHP 5.5并返回一个带有完全限定类名的字符串。